OpenGL:VBO 和损坏的 GC

Posted

技术标签:

【中文标题】OpenGL:VBO 和损坏的 GC【英文标题】:OpenGL: VBO and a broken GC 【发布时间】:2014-01-09 00:31:38 【问题描述】:

我最近尝试使用VBO。我只是从site复制粘贴代码

它编译得很好,看起来运行良好。但是,我在taskmanager 上注意到该程序以 50% 的 CPU 使用率运行。它只是一个简单的三角形,没有别的。我期望它为 0%,因为我在 glfw3 创建的所有其他程序在空闲时都以 0% 运行。我知道 glfw3 中的 V-SYNC 默认设置为 true,但我仍然添加了这行代码以确保 glfwSetInterval(GL_TRUE); //sets V-SYNC on 但仍然没有任何变化。

搞砸了test_vs.glsl之后(我认为这与问题无关):

我更改的代码:

来自

#version 400

in vec3 vp;

void main ()

    gl_Position = vec4 (vp, 1.0);

#version 400

in vec2 vp;

void main ()

    gl_Position = vec4 (vp, 0, 1.0);

并将.cpp代码中的顶点属性改为二维。

再次运行几次Hello Triangle程序,计算机停止并挂了一点--->然后CRAASSH。显卡坏了! (字面上哎哟)。计算机自行关闭,我尝试再次重新启动它,我得到一个充满随机线条的屏幕,并且无法在桌面上继续。

我没有太多关于显卡的信息,但glewGeForce 7300 GT/PCI/SSE2/3DNOW! 并在Windows XP 上运行,OpenGL v2.1 支持根据glew

我添加的一些扩展:

glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_OPENGL_CORE_PROFILE, 2); glewExperimental = GL_TRUE; 我将前缀ARB 添加到与vbo 相关的任何函数中

我怀疑这是由于缺少 OpenGL extensions support check 造成的(这只是一个假设,它最有可能是我能想到的原因)。但是,这真的是问题吗?是简单的程序还是其他?如果是这样,他们为什么要让这种情况发生?

【问题讨论】:

嗯,这里的问题似乎更多的是技术问题而不是编程问题。听起来像是驱动程序错误之类的,我怀疑一个简单的 OpenGL 程序可能会自行使您的计算机崩溃。 @mebob 我不认为这适合superuser,因为它与编程非常相关。 建议将此迁移到superuser 或其他? 你在检查GLGeterror吗? @zero298 不,我没有。 【参考方案1】:

我只想提一下GeForce 7300 不支持OpenGL-4;哎呀,它甚至没有涵盖完整的 OpenGL-3 支持。无论发生什么,GPU 很可能都不会参与其中。因此,即使在您的 GPU 上,编写 #version 400 着色器也无法使用。

【讨论】:

以上是关于OpenGL:VBO 和损坏的 GC的主要内容,如果未能解决你的问题,请参考以下文章

现代 OpenGL:VBO、GLM 和矩阵堆栈

配置VAO和VBO时,顶点数据数组是不是应该使用相同的方法? (OpenGL)[重复]

OpenGL,交错的 VBO(顶点、法线和颜色)与光

C++ 和 OpenGL,VBO 顶点与骨骼信息交错

opengl vbo 纹理

VBO绑定的OpenGL顺序