gpt4 book ai didi

c++ - 无法在 OpenGL 中获取 GLSL 着色器

转载 作者:行者123 更新时间:2023-11-30 04:21:50 24 4
gpt4 key购买 nike

我已经在这台机器上开发 opengl 一段时间了,突然间,GLEW 报告我没有运行 opengl glsl 所需的扩展,即使它在其他项目中工作。有趣的是,我什至得到

OpenGL Vendor: NVIDIA Corporation
OpenGL Renderer: GeForce 610M/PCIe/SSE2
OpenGL Version: 3.3.0

OpenGL 2.0 is available!
[FAILED] OpenGL Shading Language is not available...

我使用 glsllib 0.9.4 加载扩展,后者又使用 GLEW。我的代码如下:

bool Jogo::init() {
if(glfwInit() != GL_TRUE) return false;

glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);

if(glfwOpenWindow(1024, 768, 0, 0, 0, 0, 32, 0, GLFW_WINDOW) != GL_TRUE) return false;

glewExperimental = true;
if(initGLExtensions() != true) return false;

glm::mat4 matrizModel = glm::mat4(1.0f);
glm::mat4 matrizView = glm::lookAt(glm::vec3(0, 0, 3), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
glm::mat4 matrizProjecao = glm::perspective(45.0f, 9.0f/16.0f, -1.0f, 1.0f);

m_matrizMVP = matrizProjecao * matrizView * matrizModel;

m_shader = m_gerenciadorShader.loadfromFile("vshader.glsl", "fshader.glsl");
char *x = m_shader->getLinkerLog();

m_shader->setUniformMatrix4fv("mvp", 1, GL_FALSE, &(m_matrizMVP[0][0]));

m_world = new World();

glClearColor(0.0f, 0.2f, 0.5f, 0.0f);
glClearDepth(0.0f);

return true;
}

glsllib 加载扩展的代码是:

 bool GLSLAPI initGLExtensions(void) {
if (extensions_init) return true;
extensions_init = true;

GLenum err = glewInit();

if (GLEW_OK != err) {
cout << "Error:" << glewGetErrorString(err) << endl;
extensions_init = false;
return false;
}

cout << "OpenGL Vendor: " << (char*) glGetString(GL_VENDOR) << "\n";
cout << "OpenGL Renderer: " << (char*) glGetString(GL_RENDERER) << "\n";
cout << "OpenGL Version: " << (char*) glGetString(GL_VERSION) << "\n\n";

checkGLSL();

return true;
}

CheckGLSL 查找 glewGetExtension("GL_ARB_fragment_shader")glewGetExtension("GL_ARB_vertex_shader") 以查看是否支持 GLSL。

附言如果我删除 glewExperimental,代码会在 glGenVertexArrays 上崩溃。

最佳答案

不幸的是,GLEW 并不能真正与当前的 OpenGL 开发相提并论,尤其是在涉及核心上下文或显式版本配置文件的情况下。直到最近我遇到了完全相同的问题,也与 GLFW 有关。省略设置 OpenGL 版本窗口提示确实解决了我当时的问题。 IE。禁用或删除这两个调用:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);

关于c++ - 无法在 OpenGL 中获取 GLSL 着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167955/

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