opengl下面的代码为什么画不出点?
求指教。#include<GL/glut.h>voidmyDisplay(void){glClear(GL_COLOR_BUFFER_BIT);//glOrtho(505...
求指教。
#include <GL/glut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
//glOrtho(505600.000, 505700.000, 3351700.000, 3351900.000, 0.000, 40.000);
glOrtho(0.0, 100.0, 0.0, 200.0, 0.0, 40.0);
glBegin(GL_POINTS);
//glVertex3f(56.764f, 81.547f, 27.968f);
glVertex3f(56.7f, 81.5f, 27.9f);
//glVertex3f(6.0f, 6.0f, 6.0f);
glEnd();
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800,400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
} 展开
#include <GL/glut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
//glOrtho(505600.000, 505700.000, 3351700.000, 3351900.000, 0.000, 40.000);
glOrtho(0.0, 100.0, 0.0, 200.0, 0.0, 40.0);
glBegin(GL_POINTS);
//glVertex3f(56.764f, 81.547f, 27.968f);
glVertex3f(56.7f, 81.5f, 27.9f);
//glVertex3f(6.0f, 6.0f, 6.0f);
glEnd();
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800,400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
} 展开
1个回答
展开全部
你这个少了很多东西,而且有些接口使用的地方不对,我帮你整理了以下,下面是正规的流程和效果图:
#include <gl/freeglut.h>
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,还有什么问题?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询