Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 第一次尝试-图形程序_C++_Opengl - Fatal编程技术网

C++ 第一次尝试-图形程序

C++ 第一次尝试-图形程序,c++,opengl,C++,Opengl,我使用了一本名为《使用OpenGL绘制计算机图形》的书 在第51页我找到了这个代码 #包括 #包括“glut.h” //>>> 作废我的_显示(作废); 作废我的支票(作废); //>> int main(int argc,字符**argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); GLUTINITWindowsSize(640480); 位置(100150); glutCreateWindow(“

我使用了一本名为《使用OpenGL绘制计算机图形》的书

在第51页我找到了这个代码

#包括
#包括“glut.h”
//>>>
作废我的_显示(作废);
作废我的支票(作废);
//>>
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
GLUTINITWindowsSize(640480);
位置(100150);
glutCreateWindow(“我的第二次尝试”);
glutDisplayFunc(我的显示器);
我的心();
glutMainLoop();
返回0;
}
//>>>>>>>>>.
//>>>>>>>>>>
作废我的支票(作废)
{
glClearColor(1,1,1,0);//白色
glColor3f(0,0,0);//黑色
glPointSize(10);//点大小是10像素,这太大了。
glMatrixMode(GL_投影);
glLoadIdentity();
gluOrtho2D(0640,0480);
}
//>>>>>>>
作废My_显示(作废)
{
glClear(GLU颜色缓冲位);
glBegin(GLU点);
glVertex2i(100,50);
glVertex2i(100130);
glVertex2i(150130);
格伦德();
glFlush();
}
我在这段代码中添加的只是注释,我在变量处做了一些修改;没别的了


当我们遇到这个问题时,这个代码工作得很好,但是它没有在显示方法中创建三个点

问题只是少了一个字母。与此相反:

glBegin(GL_POINT);
正确的值为:

glBegin(GL_POINTS);
当您没有得到渲染,或者没有得到预期的渲染时,我要做的第一件事就是调用
glGetError()
,看看它是否返回错误。我承认我最初没有看到这个问题,但是调用
glGetError()
会很快指出它


顺便说一句:如果其他人对OpenGL中既有
GL_点
又有
GL_点
枚举感到惊讶的话
GL_POINT
glPolygonMode()
的可能参数之一,而
GL_POINTS
表示draw调用可能的基本类型之一。

问题只是缺少一个字母。与此相反:

glBegin(GL_POINT);
正确的值为:

glBegin(GL_POINTS);
当您没有得到渲染,或者没有得到预期的渲染时,我要做的第一件事就是调用
glGetError()
,看看它是否返回错误。我承认我最初没有看到这个问题,但是调用
glGetError()
会很快指出它


顺便说一句:如果其他人对OpenGL中既有
GL_点
又有
GL_点
枚举感到惊讶的话
GL_POINT
glPolygonMode()
的可能参数之一,而
GL_POINTS
表示绘图调用的可能原语类型之一。

它不起作用,因为源代码中有错误(不太可能),或者您错误复制了
glBegin(GL_POINT)的参数(可能)

使用

我得到了这个图像:


它不起作用,因为源代码中有错误(不太可能),或者您错误复制了
glBegin(GL\u点)的参数(可能)

使用

我得到了这个图像:


注意,抱歉,包含的代码有点多,但我已经包含了glut.h,所以我不需要包含glut.h中的所有内容,我已经包含了所有内容,结果是一样的……我在之后更改代码,在点之前更改点的大小和颜色,结果有效,但我必须为每个点编写代码。你能尝试更改点吗将初始代码中的
GLUT\u SINGLE
转换为
GLUT\u DOUBLE
,并将
My\u Display()
末尾的
glFlush()
替换为
glutSwapBuffers()
?这个例子是使用单缓冲渲染,我想它在大多数平台上仍然可以工作,但现在已经很少见了。我这么做了,但没有用。。同样的白页…还有,如果你刚开始,您可能想知道,此代码显示的几乎所有内容都是当前OpenGL版本中不推荐使用的功能。请注意,抱歉,包含的代码有点多,但我已经包含了glut.h,所以我不需要包含glut.h中的所有内容,我已经包含了所有内容,并且结果相同……我在之后更改了代码并抓住要点点之前的大小和颜色,但我必须为每个点编写。你能试着将init代码中的
GLUT\u SINGLE
更改为
GLUT\u DOUBLE
,并将
My\u Display()
末尾的
glFlush()
替换为
glutSwapBuffers()
?这个例子是使用单缓冲渲染,我想它在大多数平台上仍然可以工作,但现在已经很少见了。我这么做了,但没有用。。同样的白色页面。另外,如果您刚刚开始,您可能想知道,这段代码显示的几乎所有内容都是当前OpenGL版本中不推荐的功能。非常好--我已经做了这么多,但无法理解
GL\u POINT
是如何被认为是有效的!是的,我在gl.h中搜索了它,当我意识到
gl\u POINT
也存在时,我想知道它是什么。非常感谢。比我想要的更多。glGetError()是一个很好的函数thnx,它告诉了我:)太好了——我走了那么远,但无法理解
GL_POINT
是如何被认为是有效的!是的,我在gl.h中搜索了它,当我意识到
gl\u POINT
也存在时,我想知道它是什么。非常感谢。比我想要的更多。glGetError()是一个很好的函数thnx,可以告诉我:)