Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl-显示列表与OOP_Oop_Opengl - Fatal编程技术网

Opengl-显示列表与OOP

Opengl-显示列表与OOP,oop,opengl,Oop,Opengl,我正在阅读Nehe OpenGL教程,还有一个关于显示列表的教程。有什么理由用它来代替“类和对象”的方式吗?例如,创建cube类,然后只需编写cube.render(x,y,z) 这个想法是利用硬件和车载显示列表处理。基本上,您可以在图形处理器的内存中构建显示列表,然后您可以通过发送一个命令来显示整个列表,而不是在每次需要显示对象时重新发送所有坐标等。这可以大大降低CPU和GPU之间的带宽需求 实际上,它很大程度上取决于您使用的硬件和OpenGL实现。在某些实现中,显示列表可以显著提高性能,但在

我正在阅读Nehe OpenGL教程,还有一个关于显示列表的教程。有什么理由用它来代替“类和对象”的方式吗?例如,创建cube类,然后只需编写cube.render(x,y,z)

这个想法是利用硬件和车载显示列表处理。基本上,您可以在图形处理器的内存中构建显示列表,然后您可以通过发送一个命令来显示整个列表,而不是在每次需要显示对象时重新发送所有坐标等。这可以大大降低CPU和GPU之间的带宽需求

实际上,它很大程度上取决于您使用的硬件和OpenGL实现。在某些实现中,显示列表可以显著提高性能,但在另一些实现中,它基本上没有任何好处。

其思想是利用硬件和车载显示列表处理。基本上,您可以在图形处理器的内存中构建显示列表,然后您可以通过发送一个命令来显示整个列表,而不是在每次需要显示对象时重新发送所有坐标等。这可以大大降低CPU和GPU之间的带宽需求

实际上,它很大程度上取决于您使用的硬件和OpenGL实现。在某些实现中,显示列表可以显著提高性能——但在其他实现中,它基本上没有任何好处

我正在阅读Nehe OpenGL教程,还有一个关于显示列表的教程

我劝你不要再看Nehe了。我从未在stackoverflow上看到过任何与Nehe相关的内容,我看到的教程使用了太多平台特定的API

代替NEHE,转到OpenGL.org并查看“书籍”部分。或者,第一版的“OpenGL红皮书”也可在以下网址获得:。虽然它没有涵盖OpenGL 4中最新的API,但所有可用的方法仍然可用,即使在最新版本的OpenGL中,也可以通过“兼容性配置文件”使用

有什么理由用它来代替“类和对象”的方式吗

你混淆了两个不同的概念。显示列表是OpenGL保存OpenGL调用序列的一种方式,以便您可以在以后快速“调用”它们。根据OpenGL实现,它可能会提高应用程序性能。显示列表的使用与程序的内部组织(OOP)无关。您可以使用OOP,但仍可以在cube.render()中使用显示列表。或者可以使用顶点缓冲区对象或任何您想要的对象。或者,您可以使用“非OOP”样式,仍然使用显示列表

我正在阅读Nehe OpenGL教程,还有一个关于显示列表的教程

我劝你不要再看Nehe了。我从未在stackoverflow上看到过任何与Nehe相关的内容,我看到的教程使用了太多平台特定的API

代替NEHE,转到OpenGL.org并查看“书籍”部分。或者,第一版的“OpenGL红皮书”也可在以下网址获得:。虽然它没有涵盖OpenGL 4中最新的API,但所有可用的方法仍然可用,即使在最新版本的OpenGL中,也可以通过“兼容性配置文件”使用

有什么理由用它来代替“类和对象”的方式吗


你混淆了两个不同的概念。显示列表是OpenGL保存OpenGL调用序列的一种方式,以便您可以在以后快速“调用”它们。根据OpenGL实现,它可能会提高应用程序性能。显示列表的使用与程序的内部组织(OOP)无关。您可以使用OOP,但仍可以在cube.render()中使用显示列表。或者可以使用顶点缓冲区对象或任何您想要的对象。或者,您可以使用“非OOP”样式,仍然使用显示列表

显示列表是在GPU级别预编译的。 您自己的渲染函数是在CPU级别编译的,其单个命令仍需要在运行时通过GPU。

这类似于将“存储过程”与调用内联SQL的自定义函数进行比较。
存储过程在服务器端编译并生成执行计划,而自定义函数仅在客户端程序集中编译。

显示列表在GPU级别预编译。 您自己的渲染函数是在CPU级别编译的,其单个命令仍需要在运行时通过GPU。

这类似于将“存储过程”与调用内联SQL的自定义函数进行比较。
存储过程在服务器端编译,执行计划在服务器端生成,而自定义函数仅在客户端程序集中编译。

“显示列表在GPU级别预编译。”不正确,这根本不能保证。显示列表存储在何处以及具体实现的方式,在OPenGL标准中没有定义。请阅读标准。@SigTerm:OpenGL标准中的任何内容都不能保证在GPU或CPU上运行。但这一回答清楚地表明了它的意图。所以+1来自我。“显示列表是在GPU级别预编译的。”不正确,这根本不能保证。显示列表存储在何处以及具体实现的方式,在OPenGL标准中没有定义。请阅读标准。@SigTerm:OpenGL标准中的任何内容都不能保证在GPU或CPU上运行。但这一回答清楚地表明了它的意图。所以+1来自我。