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

标签 c++ opengl

我使用了一本名为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_POINTGL_POINTS 枚举感到惊讶。 GL_POINTglPolygonMode() 的可能参数之一,与 GL_POINTS 相对,后者表示绘图调用的可能基元类型之一。

关于c++ - 第一次尝试 - 图形程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597472/

相关文章:

c++ - 在线程内部函数上使用哪种保护方法(mutex、readwritelock ..)

c++ - 从函数返回 unordered_map 内的 unordered_map

opengl - 顶点缓冲区绑定(bind)索引和统一缓冲区绑定(bind)点?

c++ - 如何在 Qt 中使用 GLEW?

c++ - boost 正则表达式分词器和换行符

c++ - * 之前预期的构造函数、析构函数或类型转换(第 45 行)

c++ - localtime_r 在程序退出前消耗了一些内存

opengl - "missing glut32.dll"在 VS2010 下使用 OpenGL

c++ - glCreateShader 给出相同的 ID

c++ - 调试绘制 Box2D 与 Testbed 应用程序相比非常大