2
GLUT를 사용하지 않고 OpenGL에서 토러스를 렌더링해야합니다. C# 및 Tao Framework 바인딩을 사용하고 있습니다. 다음 코드는 here에서 가져 왔습니다.GLUT를 사용하지 않고 OpenGL에서 텍스처 토러스를 그리는 방법은 무엇입니까?
private void DrawTorus() {
int numc = 100, numt = 100;
double TWOPI = 2 * Math.PI;
for (int i = 0; i < numc; i++) {
Gl.glBegin(Gl.GL_QUAD_STRIP);
for (int j = 0; j <= numt; j++) {
for (int k = 1; k >= 0; k--) {
double s = (i + k) % numc + 0.5;
double t = j % numt;
double x = (1 + 0.1 * Math.Cos(s * TWOPI/numc)) * Math.Cos(t * TWOPI/numt);
double y = (1 + 0.1 * Math.Cos(s * TWOPI/numc)) * Math.Sin(t * TWOPI/numt);
double z = 0.1 * Math.Sin(s * TWOPI/numc);
Gl.glVertex3d(2 * x, 2 * y, 2 * z);
}
}
Gl.glEnd();
}
}
이 코드는 원환 체를 그으나 이제는 그 위에 텍스처를 넣어야합니다. 텍스처 좌표에 these 수식을 사용하려하지만 R 및 r (내부 및 외부 각각의 반지름)에 사용할 것을 결정할 수 없습니다.
v = arccos (Y/R)/2pi
u = [arccos ((X/(R + r*cos(2pi * v))] * 2pi
그 코드를 이해하는 몇 가지 문제가, 나는 그것의 설명 혹은 대안, 의견보다 직관적 인 코드를 부탁드립니다. 어떤 도움을 많이 주시면 감사하겠습니다.
맞습니다. 나는 거기에 그 연결을 보지 못했습니다. 이것은 이제 정상적으로 작동하는 것 같습니다. 단지 v와 u가 정규화되지 않았습니다 (구간 [0, 1]이 아님). 나는 이상한 텍스쳐 맵핑을 얻고있는 것 같아요 (스크린 샷 참조 : http://www.shrani.si/f/1Z/wY/1YtmOwkg/scr.png). 이걸로 나를 도울 수 있니? – brozo
@brozo - 잘하면이 작동합니다. – Ishtar
당신이 제안한 수정 프로그램을 적용했지만 결과는 여전히 내가 원하는 바가 아닙니다. 적용된 수정 사항으로 텍스처가 원환 체의 바깥쪽에 뻗어있는 것처럼 보입니다 (스크린 샷 참조 : http://www.shrani.si/f/17/OK/7a1oZek/scr.png). – brozo