c++ - CreateDC() 导致 glutInit() 失败?

标签 c++ winapi opengl glut freeglut

我写了一段代码来创建一个窗口并在其中绘制一个形状:

#include<glew.h>
#include<iostream>
#include<GL\freeglut.h>

#include<Windows.h>
#include<stdlib.h>
#include<math.h>

#pragma once

void Render_All()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glColor3f(1, 0, 0); glVertex2f(0.5, 0.5);
    glColor3f(1, 0, 0); glVertex2f(0.5, -0.5);
    glColor3f(1, 0, 0); glVertex2f(-0.5, -0.5);
    glColor3f(1, 0, 0); glVertex2f(-0.5, 0.5);
    glEnd();
    glFlush();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(300, 300);
    glutCreateWindow("Square");
    //glutFullScreen();
    glutDisplayFunc(Render_All);

    GLenum Error = glewInit();

    if(GLEW_OK != Error)
    {
        fprintf(stderr, "GLEW Error");
        return EXIT_FAILURE;
    }

    glutMainLoop();
    return 0;
}

代码编译正常。输出结果符合预期。唯一的问题是,我在控制台窗口中收到此消息:

fghInitialize: CreateDC failed, Screen size info may be incorrect. This is quite likely caused by a bad '-display' parameter.

在互联网上嗅探,我发现这是从 freeglut_init.c 文件中调用的。除此之外,我找不到任何解决方法。我该如何解决这个问题?

附言:这是在 Visual Studio 10 中完成的。我在相同条件下在另一台 PC(笔记本电脑)上执行了相同的程序,但没有出现此消息。所以,这很可能是硬件问题。尽管如此,它并没有解释如何解决它。

最佳答案

这是因为您将 -display 参数传递给您的程序,或者更可能是您定义了 DISPLAY 环境变量。 Under windows, FreeGLUT will use the DISPLAY variable调用CreateDC() ,需要 NULL、“DISPLAY”或有效的显示设备名称。

关于c++ - CreateDC() 导致 glutInit() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069038/

相关文章:

windows - 每个人都可写的 Win32 注册表项?

c++ - 如何使用ASSIMP的ReadFile函数加载多个模型

java - glOrtho 参数对应什么?

c++ - 每帧的 OpenGL 颜色缓冲区增加了过多的帧时间

c++ - 此代码对于重载比较运算符是否正确?

c++ - 创建一个 shared_ptr 到 int 的 vector

c++ - 使用最佳编译器标志和配置从 cmake 运行 Halide 生成器

delphi - GetAsyncKeyState "strange"行为

c++ - C++17 std::filesystem::recursive_directory_iterator::pop 等于 boost::filesystem::recursive_directory_iterator::no_push

windows - 在 Windows 设备管理器中以编程方式卸载设备