openGL中画三角形运行结果错误
想画三角形,实现三角形扩大平移和旋转,运行时右上角总有一块黑色正方形,画面上只有三角形的一部分
main.cpp里的代码
using namespace std;
STImage* buff;
void display( void )
{
glClear( GL_COLOR_BUFFER_BIT );
renderTriangles();
/*sglScale(2, 2);
sglTranslate(5, 5);
sglRotate(90);*/
buff->Draw();
glutSwapBuffers();
}
void reshape( GLsizei w, GLsizei h )
{
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0., w, 0., h, -1., 1. );
glViewport( 0, 0, w, h );
setBufferSize(w, h);
glutPostRedisplay();
}
void keyboard( unsigned char key, int x, int y )
{
switch(key)
{
case 27: // Escape key
exit(0);
break;
case 's': // Save
buff->Save("output.png");
break;
}
}
void renderTriangles()
{
sglLoadIdentity();
glPushMatrix();
sglBeginTriangles();
sglColor(1,1,0);
sglVertex(0,0.7);
sglColor(0,1,1);
sglVertex(-0.7,-0.7);
sglColor(1,0,1);
sglVertex(0.7,-0.7);
sglEnd();
sglPopMatrix();
glFlush();
}
int main (int argc, char *argv[])
{
int win_width = 512;
int win_height = 512;
buff = new STImage(win_width, win_height, STColor4ub(0, 0, 0, 255));
setBuffer(buff);
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutInitWindowSize( win_width, win_height );
glutCreateWindow( "Intro Graphics Assignment 2" );
glClearColor(1.0,1.0,1.0,1.0);
glutDisplayFunc( display );
glutReshapeFunc( reshape );
glutKeyboardFunc( keyboard );
glutMainLoop();
delete buff;
}
求大家帮忙 OpenGL
[解决办法]
搜网络教程“学OpenGL编3D游戏”。
[解决办法]
void renderTriangles()中在最前面加一行:
glMatrixMode( GL_MODELVIEW );