- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
这篇文章是昨天编辑并提交审查的。
Improve this question
我的离散视频卡在程序工作时复制了大量数据(我在任务管理器中看到了),即使我使用了缓冲区。
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
glfwSwapBuffers(window);
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, colbuff);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(3, GL_FLOAT, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, buff);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, NULL);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elembuff);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_INT, NULL);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
pidoss.它工作正常(按照我的计划画了一个彩色的四元图),但是性能更差
1条答案
按热度按时间8aqjt8rx1#
集成GPU位于CPU旁边,与CPU在同一总线上,可以直接访问主系统内存。
专用GPU有自己独立的内存。要将数据从系统内存复制到专用GPU内存中。
通常这是一件好事,因为专用GPU可以直接引用图形数据,而无需与CPU竞争访问相同的内存芯片。但如果应用程序编写得不好,它可能会不断地将新数据从系统内存复制到图形内存,从而浪费时间。当您调用
glBufferData
之类的函数时,就会发生将数据从系统内存复制到图形内存的情况。我怀疑您编写的程序总是将大量数据复制到缓冲区中,即使数据已经在缓冲区中,而不是复制一次后就不管它。