【发布时间】:2011-12-30 20:41:44
【问题描述】:
我有一个来自 opengl 的无效图像格式错误。我不确定是因为我使用了预编译的头文件,还是我没有正确初始化 OpenGL。据我所知,我没有使用 C++/CLI(我选择在 VC++ Express 2010 中创建一个空项目)。我正在运行 Windows7 (x64),我的错误代码是 0xc000007b。
这在 OpenGL 中很常见吗?我也在使用 Glew,与 Freeglut 一起使用。
奇怪的是我根本没有尝试渲染图像或任何东西;我只是想让一个窗口出现。
守则
#include "stdafx.h"
#include "triangle.h"
#include "matrix3f.h"
static GLfloat move;
static GLfloat spin;
void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glShadeModel(GL_FLAT);
glPopMatrix();
glutSwapBuffers();
}
void draw_window() {
int height = 500;
double width = 1.9 * (double)height;
glutInitWindowSize((int)width, height);
glutInitWindowPosition(0, 0);
glutCreateWindow("opengl_03");
}
void spin_display() {
spin += 2.0;
if (spin > 360.0)
spin -= 360.0;
glutPostRedisplay();
}
void move_display() {
move += 1.0;
if (move > 10)
move -= 10;
glutPostRedisplay();
}
void keyboard(unsigned char button, int state, int x) {
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitContextVersion(3, 1);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
init();
draw_window();
//system("pause");
return 0;
}
还有一点很有趣,那就是我是如何从中得到一个糟糕的图像格式的。我已经检查以确保我的版本也在 IDE 中进行调试。
问题
如果可能的话,我的主要问题是确切地知道我做错了什么。
更新
我尝试将glew32.dll 移动到SysWOW64,但不幸的是这没有奏效。我还尝试了将我的 draw_window 函数移动到 main 顶部的建议,但这也不起作用。
【问题讨论】:
-
你到底是从什么地方得到这个错误的? OpenGL 本身没有“无效格式错误”的概念。
-
这可能意味着您正在尝试在 64 位应用程序中加载 32 位 DLL,反之亦然。
-
很可能是这种情况,只有我在我的 system32 中加载了 32 位 dll(实际上是 glew32)。我会尝试将其移至 SysWOW64 看看会发生什么。
标签: c++ visual-c++ opengl freeglut