c++ - glGetIntegerv 返回垃圾值

标签 c++ opengl

#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;
}
  1. 这个程序的输出是,-858993460 .为什么?它应该返回支持的扩展数量。

  2. 如果我删除 freeglut.h头文件,程序不运行并抛出错误信息,

error LNK2019: unresolved external symbol __imp__glGetIntegerv@8 referenced in function _main

但是,glGetIntegerv在里面glew.h .为什么删除 freeglut.h会导致 Unresolved external 错误吗?

编辑 我支持 OpenGL 3.3。使用带有 Catalyst 11.6 的 Radeon 4670。

最佳答案

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

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

这个裸机工作正常。

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/

相关文章:

c++ - 了解现代 OpenGL 中的代码绘制 .obj 并设置不同的位置

c++ - 如何修复QT中的GL.h编译错误?

OpenGL,世界到对象坐标映射? (逆矩阵)

c++ - vector的第一个元素的地址是固定的吗?

c++ - 迷失在指针的世界里

java - Libgdx - 黑屏之谜

OpenGL GLSL Cel 着色和轮廓算法

c++ - 在 C++ 中分配回调函数

c++ - 在 C++ 中包含非标准 C 头文件

c++ - 在另一个 cpp 文件中使用枚举时出现问题