Классические старые коды работают.Как glBegin()
и glEnd()
.Но я хочу сделать его более новым стилем, но не настолько, как версия 3.3.Но как вершины это не работает.Я работаю над MacBook Pro XCode.
c ++ opengl glfw glew mac osx
Показывает только цветную поверхность.Не картинка.
void DrawQuad( GLfloat PosX, GLfloat PosY, GLfloat PosZ, GLfloat edgeLength )
{
GLfloat halfSideLength = edgeLength * 0.5f;
GLfloat vertices[] =
{
PosX - halfSideLength, PosY - halfSideLength, PosZ, // bottom left
PosX + halfSideLength, PosY - halfSideLength, PosZ, // bottom right
PosX + halfSideLength, PosY + halfSideLength, PosZ, // top right
PosX - halfSideLength, PosY + halfSideLength, PosZ // top left
};
GLfloat colour[] =
{
1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 1.0f,
1.0f, 1.0f, 0.0f
};
GLfloat map2D[] = {
0.0f, 0.0f,
1.0f, 0.0f,
1.0f, 1.0f,
0.0f, 1.0f
};
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textures[1]);
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
glEnableClientState( GL_VERTEX_ARRAY );
glEnableClientState( GL_COLOR_ARRAY );
glEnableClientState(GL_TEXTURE_2D_ARRAY);
glVertexPointer( 3, GL_FLOAT, 0, vertices );
glTexCoordPointer( 2, GL_FLOAT, 0, map2D );
glColorPointer( 3, GL_FLOAT, 0, colour );
glDrawArrays( GL_QUADS, 0, 4 );
glDisableClientState( GL_COLOR_ARRAY );
glDisableClientState(GL_TEXTURE_2D_ARRAY);
glDisableClientState( GL_VERTEX_ARRAY );
glDisable(GL_TEXTURE_2D);
}
Но она работает по нижеуказанному:
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textures[1]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(200.0f, 200.0f, -400.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(450.0f, 200.0f, -400.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(450.0f, 450.0f, -400.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(200.0f, 450.0f, -400.0f);
glEnd();
glDisable(GL_TEXTURE_2D);