정점 배열을 사용하여 원점 정점과 색상을 저장하고 있습니다.회전하는 정점 배열 오브젝트가 작동하지 않습니다.
void setup1(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
// Enable two vertex arrays: co-ordinates and color.
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
// Specify locations for the co-ordinates and color arrays.
glVertexPointer(3, GL_FLOAT, 0, Vertices1);
glColorPointer(3, GL_FLOAT, 0, Colors1);
}
어레이의 글로벌 선언 여기에서 : 여기
가 설치 함수 배열은 모두 여기에 설정된static float Vertices1[500] = { 0 };
static float Colors1[500] = { 0 };
(R은, X 및 Y는 반경이다 인 t는 원의 각도 매개 변수입니다.
void doGlobals1()
{
for (int i = 0; i < numVertices1 * 3; i += 3)
{
Vertices1[i] = X + R * cos(t);
Vertices1[i + 1] = Y + R * sin(t);
Vertices1[i + 2] = 0.0;
t += 2 * PI/numVertices1;
}
for (int j = 0; j < numVertices1 * 3; j += 3)
{
Colors1[j] = (float)rand()/(float)RAND_MAX;
Colors1[j + 1] = (float)rand()/(float)RAND_MAX;
Colors1[j + 2] = (float)rand()/(float)RAND_MAX;
}
}
마지막으로, 여기에서 모양이 dr입니다 (X, Y) 중심입니다. 까끄라기.
// Window 1 drawing routine.
void drawScene1(void)
{
glutSetWindow(win1);
glLoadIdentity();
doGlobals1();
glClear(GL_COLOR_BUFFER_BIT);
glRotatef(15, 1, 0, 0);
glDrawArrays(GL_TRIANGLE_FAN, 0, numVertices1);
glFlush();
}
회전이 없으면 원이 잘게 끕니다. 원은 Scale/Translate 기능으로도 잘 그려집니다. 버텍스 배열로 그려진 객체를 회전시키는 데 필요한 몇 가지 특별한 프로토콜이 있다고 생각합니다.
누구나 내가 잘못 갔는지, 내가 물건을 회전 시키거나 조언을 해줄 필요가있는 곳을 말해 줄 수 있습니까?
그래서 갑자기 당신이 사진을 더 이상 볼 수없는 이유는 무엇입니까? – TheBlindSpring
네, 바로 그 것입니다. 원을 축척 할 때 (일반적으로 문제와 관련이 없을 수도 있음) 축의 크기가 변하는 방향으로 변환됩니다 (예 : 1.5 배 Scaling X 또한 X 방향으로 변환). – 404Cat
Modelview 매트릭스로 이동하십시오. 나는 OpenTK를 중심으로 C++에 대한 코드를 모르기 때문에 주로 identity matrix를로드하기 전에'glMatrixMode (MatrixMode.Modelview)'와 같은 것을해라. – TheBlindSpring