本文介绍了glGetIntegerv返回垃圾值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#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 。为什么?

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

If I remove the freeglut.h header file, the program doesn't run and throws an error message,

错误LNK2019:未解决的外部符号__imp__glGetIntegerv @ 8在函数_main中引用

但是, glGetIntegerv c $ c> glew.h 。为什么删除 freeglut.h 会导致未解决的外部错误?

But, glGetIntegerv is inside glew.h. Why removing freeglut.h would cause an unresolved external error?

EDIT OpenGL 3.3支持。使用Radeon 4670与催化剂11.6。

EDIT I have OpenGL 3.3 support. Using Radeon 4670 with catalyst 11.6.

推荐答案

@mario& @Banthar是的,谢谢。我必须先创建一个上下文来使用任何Opengl功能(是的,即使对于Opengl 1.1,它默认带有窗口。)

@mario & @Banthar yes, thanks. I have to create a context first to use the any Opengl functionality.(yes, even for Opengl 1.1 which comes default with windows.)

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;
}

这篇关于glGetIntegerv返回垃圾值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 18:29