我使用了一本名为Computer Graphics using OpenGL 的书。
我在第 51 页找到了这段代码
#include <windows.h>
#include "glut.h"
//<<<<<<<<<<<<<<<<< method(s) >>>>>>>>>>>>>>>>>>>
void My_Display(void);
void My_Inti(void);
//<<<<<<<<<<<<<<<<< main method >>>>>>>>>>>>>>>>>>
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("my second try ");
glutDisplayFunc(My_Display);
My_Inti();
glutMainLoop();
return 0;
}
//<<<<<<<<<<<<<<<<<<<<<<<< IMPLEMENTING METHOD(S) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
//<<<<<<<<<<<<<<<< My_Inti >>>>>>>>>>>>>>>>>>>>>>>>>
void My_Inti(void)
{
glClearColor(1, 1, 1, 0); // white color
glColor3f(0, 0, 0); // Black color
glPointSize(10); // point size is 10 pixel this is big .
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 640, 0, 480);
}
//<<<<<<<<<<<<<<<< My_Display >>>>>>>>>>>>>>>>>>>>>>
void My_Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINT);
glVertex2i(100, 50);
glVertex2i(100, 130);
glVertex2i(150, 130);
glEnd();
glFlush();
}
我添加到此代码的所有内容都是注释,我对变量进行了一些更改;仅此而已。
当我们遇到问题时,这段代码工作正常,但它没有在显示方法中创建三个点?
最佳答案
问题只是少了一个字母。而不是这个:
glBegin(GL_POINT);
正确的值是:
glBegin(GL_POINTS);
当您没有渲染或没有得到预期的渲染时,我要做的第一件事就是调用 glGetError()
,看看它是否返回错误。我承认我最初没有看到这个问题,但是调用 glGetError()
会很快指出它。
顺便说一句:以防其他人对 OpenGL 中同时存在 GL_POINT
和 GL_POINTS
枚举感到惊讶。 GL_POINT
是 glPolygonMode()
的可能参数之一,与 GL_POINTS
相对,后者表示绘图调用的可能基元类型之一。
关于c++ - 第一次尝试 - 图形程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597472/