在哪里可以学习如何使用C ++与显卡连接?

时间:2010-11-13 16:58:31

标签: c++ opengl 3d gpu glsl

我现在正在学习c ++,我想开始与显卡连接并使用3D图形的基础知识。我没有在我的书或互联网查询中找到它,我实际上完全不知道从哪里开始。编译后,c ++代码可以在显卡上运行吗?我知道我通过OpenGL访问GPU处理,但我不清楚这是否只是一个,用于通过c ++(可能还有其他语言)访问以将函数传递给GPU,或者它是否特定于GLSL。 那么什么是OpenGL,我如何将它与c ++结合使用才能将处理传递给GPU?是否有其他更直接或灵活的方式来使用C ++和图形卡?

6 个答案:

答案 0 :(得分:8)

OpenGL是一个库。您的C ++代码编译为机器代码(针对您的CPU,而不是GPU),调用OpenGL函数,将数据发送到您的图形卡(GPU)。图形卡会解释该数据,并使用它来执行您要求它执行的任何操作。 GPU 不会运行任何C ++代码。

GLSL(OpenGL着色语言)是一种用于指示GPU着色器功能的语言。请注意,该名称有点用词不当,因为使用着色语言编写的代码比现在的着色要多得多。通常,您将编写GLSL代码,就像编写C ++代码一样,然后使用OpenGL调用编译GLSL代码,然后使用更多OpenGL调用来指示CPU使用着色器程序。


CPU

C ++代码调用 OpenGL函数调用图形驱动程序代码,它通过硬件向 GPU 发送指令。

GPU

解释从图形驱动程序接收的硬件信号以运行其自己的内部程序。这可能包括已编译的GLSL程序,它们也以相同的方式从CPU发送。


注意:您可以使用其他着色语言将“Open GL functions”替换为“DirectX functions”和“GLSL”,图表也是相同的。

答案 1 :(得分:6)

OpenGL和DirectX为您提供与图形卡的连接。

您可以自己编写低级代码,但我建议您首先了解基础知识。

一旦你完成了这项工作,你可以自己编写图形驱动程序,但不要超过卡制造商开发团队的表现。

答案 2 :(得分:2)

Opengl的最终位置NeHe。这里的教程将为您提供基础知识。

答案 3 :(得分:1)

简单地说,OpenGL是一个与您的图形卡驱动程序通信的库。您在C ++中调用OpenGL函数,这会导致命令被发送到GPU进行处理。您的C ++代码始终在CPU上运行,包括所有OpenGL库调用,但调用将转换为图形卡驱动程序可以理解的命令。

过去,GPU具有固定功能管道,OpenGL充当状态机,您可以在其中启用和禁用某些功能,例如指定光源的位置或某些图像应如何映射到对象。 OpenGL仍然是一个状态机,但是使用可编程shaders,您可以用类C语言(GLSL)编写程序,并使用OpenGL函数指示驱动程序编译和链接程序并在GPU上执行它们。

开始更多地了解OpenGL的好地方是OpenGL SuperBible。最新版本不包括旧的固定功能管道(你不能写着色器),需要一个像样的视频卡。

答案 4 :(得分:0)

首先,我建议您使用GLUT(GL Utility Toolkit)API。在这里查找... http://www.opengl.org/resources/libraries/glut/

我认为这是使用openGL开始图形编程的最佳方式。

答案 5 :(得分:0)

您是否对使用GPU感兴趣...

图形:您有两个接口,OpenGL(多平台)和Direct3D(Windows),几乎所有GPU驱动程序都支持这些接口。

计算:最常见的接口ATM是NVidia的CUDA(仅适用于GeForce卡)。还有OpenCL(应该支持所有地方,但我不确定GeForces目前的状态; ATI都可以)和AMD / ATI的一些我不熟悉的专有解决方案。

选择您喜欢的任何内容并开始学习它,有很多示例和教程可以在网上找到。