#include<iostream>
#include"Glew\glew.h"
#include"freeGlut\freeglut.h"
using namespace std;

int main(int argc, char* argv[])
{
    GLint ExtensionCount;
    glGetIntegerv(GL_NUM_EXTENSIONS, &ExtensionCount);
    cout << ExtensionCount << endl;

    return 0;
}
  • 该程序的输出是 -858993460 。为什么?它应该返回支持的扩展数量。
  • 如果我删除 freeglut.h 头文件,程序不会运行并抛出错误消息
  • error LNK2019: unresolved external symbol __imp__glGetIntegerv@8 referenced in function _main
    但是, glGetIntegervglew.h 里面。为什么删除 freeglut.h 会导致 Unresolved external 错误?

    编辑 我有 OpenGL 3.3 支持。使用 Radeon 4670 和催化剂 11.6。

    最佳答案

    @mario & @Banthar 是的,谢谢。我必须首先创建一个上下文才能使用任何 Opengl 功能。(是的,即使是 Windows 默认的 Opengl 1.1。)

    glGetIntegerv 没有返回垃圾。 glGetIntegerv 要么返回一个好的值,要么根本不接触指向的地址。之所以看到垃圾,是因为变量没有初始化。这似乎是一个迂腐的评论,但知道 glGetIntegerv 在失败时不会触及变量实际上很重要。谢谢@达蒙

    这个裸骨工作正常。

    int main(int argc, char* argv[])
    {
        glutInit(&argc, argv);
    
        glutInitContextVersion(3,3);
        glutInitContextProfile(GLUT_FORWARD_COMPATIBLE);
        glutInitContextProfile(GLUT_CORE_PROFILE);
    
        glutCreateWindow("Test");
    
        GLint ExtensionCount;
        glGetIntegerv(GL_NUM_EXTENSIONS, &ExtensionCount);
        cout << ExtensionCount << endl;
    
        return 0;
    }
    

    关于c++ - glGetIntegerv 返回垃圾值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6594214/

    10-11 21:45