中易网

opengl下面的代码为什么画不出点?

答案:1  悬赏:60  
解决时间 2021-01-18 10:42
  • 提问者网友:两耳就是菩提
  • 2021-01-17 18:27
opengl下面的代码为什么画不出点?
最佳答案
  • 二级知识专家网友:煞尾
  • 2021-01-17 18:58
你这个少了很多东西,而且有些接口使用的地方不对,我帮你整理了以下,下面是正规的流程和效果图:
#include 


void display21()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glPointSize( 9 );   // 绘制前设置下点的大小和颜色
glColor3f( 1, 0, 0 );
glBegin( GL_POINTS );
glVertex3f( 56, 87, 27 );
glEnd();

// 只flush没用的,直接swap就好了
glutSwapBuffers();
}

void reshape21(int w, int h)
{
// 这里要设置opengl在窗口的绘图区域,一般是整个窗口
glViewport( 0, 0, w, h );

// 一般只在窗口reshape时才重新设定下投影矩阵和模型矩阵
glMatrixMode( GL_PROJECTION );
glLoadIdentity();

// 镜头默认在坐标原点看向Z轴负方向,而glOrtho最后两个参数表示
// 距离镜头zNear到zFar距离间的图形才可以看到
// 而且默认坐标系Z轴正方向是指向屏幕朝外侧的,
// 你设置成0, 40就只能看到Z坐标( -40, 0 )间的物体,
// 所以zNear给个负数,就能看到Z坐标为正的物体了
glOrtho( 0, 100, 0, 200, -40, 40 );

// 投影矩阵设好后再将当前矩阵设置为模型矩阵,
// 方便后续的图形绘制和图形变换
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}

int main( int argc, char** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode ( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA );
glutInitWindowSize ( 500, 300 );
glutInitWindowPosition ( 100, 100 );
glutCreateWindow ( "测试demo" );

glClearColor( 0.9, 0.9, 0.9, 1 );

glutDisplayFunc( display21 );
glutReshapeFunc( reshape21 );   // 这个必须有
glutMainLoop();
return 0;
}
追问大神。。。加下q q行嘛?我想具体问一下追答你就这里说吧,我不怎么用QQ,还有什么问题?追问我现在是老师给了个文件,里面是坐标,然后我要把图形输出来,里面的坐标数都很大很大,几百万的那种,我输其中一个坐标,它显示不出来啊。。追答glOrtho前四个参数是设置xy坐标范围的,你自己根据实际情况把范围设置合适了就出来了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息