OPENGL的菜鸟问题,希望老师指点下,谢谢
#include <GL/glut.h>
#include <stdlib.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity(); // 重置视口
glPushMatrix();
glTranslatef(0.0f,0.0f,0.0f);
glBegin(GL_TRIANGLES); // 绘制三角形
glVertex3f( 0.0f, 10.0f, 0.0f);
glVertex3f(-10.0f,-10.0f, 0.0f);
glVertex3f( 10.0f,-10.0f, 0.0f);
glPopMatrix();
glTranslatef(10.0f,0.0f,0.0f);
glPushMatrix();
glBegin(GL_QUADS); // 绘制正方形
glVertex3f(-10.0f, 10.0f, 0.0f); // 左上
glVertex3f( 10.0f, 10.0f, 0.0f); // 右上
glVertex3f( 10.0f,-10.0f, 0.0f); // 左下
glVertex3f(-10.0f,-10.0f, 0.0f); // 右下
glPopMatrix();
glEnd();
glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27: /* Escape key */
exit(0);
break;
default:
break;
}
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (800, 600);
glutInitWindowPosition (0, 0);
glutCreateWindow (argv[0]);
init ();
glutKeyboardFunc (keyboard);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}
菜鸟我想画一个三角形和一个正方形,两个图像都显示在屏幕上。所以做了这一段代码。但是
glTranslatef(0.0f,0.0f,0.0f);这个函数用得不妥当,前面的三角形得不到平移,希望各位老师
帮我指点一下。谢谢
问题点数:20、回复次数:4Top
1 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-07 14:05:34 得分 10
你的问题是glBegin和glEnd没有成对
三角形绘制完成后,少了一个glEnd的调用Top
2 楼gata8848(甘滔)回复于 2006-03-07 15:22:02 得分 0
我让他成对之后还是不行哦,不知道是怎么回事Top
3 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-07 15:41:07 得分 10
glPushMatrix();
glTranslatef(0.0f,0.0f,0.0f);
glBegin(GL_TRIANGLES); // »æÖÆÈý½ÇÐÎ
glVertex3f( 0.0f, 10.0f, 0.f);
glVertex3f(-10.0f,-10.0f, 0.f);
glVertex3f( 10.0f,-10.0f, 0.f);
glEnd();
glPopMatrix();
glTranslatef(10.0f,0.0f,0.0f); //
glPushMatrix(); //
glBegin(GL_QUADS); // »æÖÆÕý·½ÐÎ
glVertex3f(-10.0f, 10.0f, 0.0f); // ×óÉÏ
glVertex3f( 10.0f, 10.0f, 0.0f); // ÓÒÉÏ
glVertex3f( 10.0f,-10.0f, 0.0f); // ×óÏÂ
glVertex3f(-10.0f,-10.0f, 0.0f); // ÓÒÏÂ
glPopMatrix(); //
glEnd();
结果是一个梯形:左边三角形和右边矩形挨在一起Top
4 楼gata8848(甘滔)回复于 2006-03-07 16:45:14 得分 0
谢谢各位老师的解答;问题解决了,谢谢。菜鸟我正在起步学习,呵呵Top




