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++ - opengl 平移与 glulookat

c++ - 如何在OpenGL中绘制由5个三角形组成的VAO?

c++ - OpenGL:为什么这个白屏

c++ - OpenGL 大 3D 纹理 (>2GB) 非常慢

c++ - 搜索并找到最短队列并在某些条件后搜索

c++ - 带星号 * 通配符的字符串搜索

c++ - 是什么导致这个数组值改变?

c++ - 检查默认删除的函数模板是否明确专门用于特定类型?

c++ - 如何检测整个周期的C++随机引擎已经被消耗

java - 如何使用处理在单独的线程中读取 OpenGL 像素?