좋아요, 그래서 저는 6 개의면을 그려 입방체를 그리려고했습니다.OpenGL에서 두 개의 벡터가있는 3D 평면 그리기
두 개의 벡터를 주어 큐브 자체의 각면을 정의합니다. 다음과 같이
을하지만, 지금은 (내가 자바 라이브러리가 OpenGL을에 구축이다 LWJGL을 사용하고 단지 작은 메모)는 OpenGL에서이 얼굴을 그리는 방법의 문제가 발생하고있다.
나는 그 얼굴들을 그리려고했지만, 나는 내가 옳은 것처럼 보이지 않는 약간의 실수가 있다고 생각한다.
public void render() {
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex3f(v2.x, v1.y, v1.z);
GL11.glVertex3f(v1.x, v1.y, v1.z);
GL11.glVertex3f(v1.x, v2.y, v2.z);
GL11.glVertex3f(v2.x, v2.y, v2.z);
GL11.glEnd();
}
을하지만 측면 (왼쪽/오른쪽) 얼굴도 보이지 않는 동안 만 상단과 하단면이 제대로 그려 얻을, 여기 보인다 : 현재, 나는 다음과 같이 얼굴을 그리는 시도했다.
어떻게 적절하게 그릴 수 있습니까?
당신의 암호. 큐브의 각면에는 4 개의 정점이 필요하기 때문에 렌더링 함수가 큐브의 한 면만 그립니다. 맞습니까? 귀하의 벡터 정의는 약간 혼란 스럽습니다. 전통적으로 벡터는 X, Y, Z 위치와 X, Y 및 Z 방향의 크기를 갖는 것으로 생각할 수 있습니다. 벡터에 3 개의 필드 만있는 것 같은데, 이것들은 벡터의 크기 나 위치입니까? – aoi222
명확히하기 - 예, 모든 단일면은 지정된 렌더링 방법을 사용하여 그립니다. 여기에있는 각 벡터는 X, Y 및 Z 위치가있는 간단한 Vector3f 객체입니다. – Zilarion
Vector3f 클래스의 X, Y 및 Z 구성 요소는 벡터의 크기가 아니라 벡터의 시작 위치로 사용됩니다. 순전히 저장소 클래스로 사용하고 클래스의 다른 함수를 사용하지 않으면 큰 문제가되지 않을 수 있습니다. 두 벡터가 시작되는 시점을 고려해야합니다 (아래 a.lasram의 게시물을보십시오). – aoi222