首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

openGL中画三角形运行结果异常

2013-01-17 
openGL中画三角形运行结果错误想画三角形,实现三角形扩大平移和旋转,运行时右上角总有一块黑色正方形,画面

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 );

热点排行