gpt4 book ai didi

c++ - glTexImage3D 抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:28 25 4
gpt4 key购买 nike

我正在尝试在 VS13 中编译此应用程序。我以这种方式链接了所有库:来自 glew-1.10.0\lib\Release\Win32 的 glew32.lib将 glew32.dll 放在与 Debug 相同的文件夹中链接glfw3

当我运行这段代码时,它会在 glTexImage3D 处抛出一个异常;它说“访问冲突执行位置 0x00000000。”

    #include <GL/glew.h>
#include <GL/glfw3.h>

#include <cstdlib>
#include <iostream>

GLenum volumeTexture;

int main() {
// Initialize GLFW
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW! I'm out!" << std::endl;
exit(-1);
}

glewExperimental = GL_TRUE;
GLenum err = glewInit();

if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
fprintf(stderr, "Error: %s\n", glewGetErrorString(err));

}

// Use red to clear the screen
glClearColor(1, 0, 0, 1);
glGenTextures(1, &volumeTexture);
glBindTexture(GL_TEXTURE_3D, volumeTexture);

glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA8, 256, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

我注意到如果我添加

错误会解决
glTexImage3D = (PFNGLTEXIMAGE3DPROC) wglGetProcAddress("glTexImage3D");

但是后来我在运行 glGenFramebuffers 时遇到了同样的异常(即使我评论了 glTexImage3D 行我也得到了它)我是否以错误的方式链接了某些内容?

最佳答案

你的顺序是错误的。

glewInit() 需要当前的 GL 上下文来执行它的操作。如果没有当前上下文,它就无法查询 GL 的入口点,并将其所有函数指针(例如 glTexImage3D())设置为 NULL。

glfwInit() 不会创建 GL 上下文,也不会使其成为当前上下文。

为此,您需要 glfwCreateWindow()glfwMakeContextCurrent()

关于c++ - glTexImage3D 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24245481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com