Java 移植C++;LWJGL的OpenGL帧缓冲区代码-我使用什么类?
我正在尝试使用LWJGL执行阴影映射。我注意到LWJGL有三个类,其中包含本教程使用的所有帧缓冲区函数:、和Java 移植C++;LWJGL的OpenGL帧缓冲区代码-我使用什么类?,java,c++,opengl,lwjgl,framebuffer,Java,C++,Opengl,Lwjgl,Framebuffer,我正在尝试使用LWJGL执行阴影映射。我注意到LWJGL有三个类,其中包含本教程使用的所有帧缓冲区函数:、和 我不知道该用哪一个。有人能给我解释一下这些类的区别吗?我应该使用哪一个?我曾经尝试过移植代码,但运气不好,所以我希望在再次尝试之前将其清除。通过使用核心函数,大多数人都能够运行该程序,只要他们的图形卡能够运行特定的GL版本 EXT扩展通常只有少数供应商支持 ARB扩展通常得到大多数供应商的支持,但不一定得到所有供应商的支持 核心功能由支持程序使用的特定GL版本的每一张卡支持 因此,底
我不知道该用哪一个。有人能给我解释一下这些类的区别吗?我应该使用哪一个?我曾经尝试过移植代码,但运气不好,所以我希望在再次尝试之前将其清除。通过使用核心函数,大多数人都能够运行该程序,只要他们的图形卡能够运行特定的GL版本
- EXT扩展通常只有少数供应商支持
- ARB扩展通常得到大多数供应商的支持,但不一定得到所有供应商的支持
- 核心功能由支持程序使用的特定GL版本的每一张卡支持
GL_TEXTURE1
与glactivetexturearlab
一起使用,也不能将GL_TEXTURE1\u EXT
与glActiveTexture
一起使用。尽管混合它们有时仍能得到预期的结果,但这并不能保证
额外的
试着阅读我的答案这个问题基本上与你的问题相同,尽管OP询问了核心函数和扩展之间的区别
更新
<>如果C++代码使用了Ext函数或ARB函数,我应该在OpenGL中使用这些函数,还是只能使用核心函数?
一些ARB、EXT等函数可能还不是核心函数。你可以说扩展是用来测试新函数的。然后,当它们经过测试,并且看起来有用且稳定时,它们将被制作成核心功能(这实际上是抽象的说法)
但是如果ARB、EXT等功能已经作为核心功能存在。然后使用核心函数,正如前面所说的,核心函数只需要某个OpenGL版本就可以运行,同样的保证不适用于扩展
如果图形卡不支持OpenGL 3.0或更高版本,那么您当然不能使用这些核心功能。那么您可能会很幸运,您可以使用ARB或EXT等函数来完成相同的任务
然后,当我们计算以上所有内容时,我会使用
GL30
来创建帧缓冲区,而不是使用ARBFramebufferObject
和EXTFramebufferObject
。尽管如果你不能使用GL30
,我还是会尝试使用ARBFramebufferObject
,然后再使用EXTFramebufferObject
。谢谢,这就把事情搞定了。让我再问你一个问题,让我说我把一些C++ OpenGL移植到java LWJGL中。如果C++代码使用了Ext函数或ARB函数,我应该在OpenGL中使用这些函数,还是可以直接使用核心代码呢?