首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL着色器?

OpenGL着色器?
EN

Stack Overflow用户
提问于 2010-09-30 04:09:57
回答 4查看 1.3K关注 0票数 3

我正在用Java语言写一个游戏,LJGWL (OpenGL)。我正在使用一个库,它可以为我处理很多杂乱的细节,但需要找到更快的方法来完成这项工作。

基本上,我希望将屏幕上的每个像素设置为尽可能快地表示随机颜色。“随机颜色”只是一个每2-3秒更新一次的数组。我已经尝试过画矩形和使用图像,对于我想做的事情来说,这两种方法都很慢。

我想我想学习如何编写GPU着色器?这是最快的方法吗?LJGWL将OpenGL接口暴露给java。有关于如何开始使用OpenGL着色器的基本教程吗?或者我应该动态创建某种纹理,然后抛出整个纹理,这样会更快吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-30 09:18:57

如果是静态显示相同的图像,那么使用纹理或显示列表就足够了。但由于您希望频繁更新它,着色器确实是最好的选择。着色器代码在GPU上执行,并以GRAM格式修改数据,因此从CPU到GPU的传输没有瓶颈。下一个最好的东西可能是Pixel或Frame Buffer对象。Buffer对象允许您通过DMA (无需通过CPU)对GRAM进行读/写,因此它们可以非常快。

我还没有写任何着色器,所以我不能推荐任何好的资源。但是SongHo's OpenGL pages是一个学习Buffer对象的好地方。(他的例子是用C++编写的)

票数 6
EN

Stack Overflow用户

发布于 2010-09-30 04:14:19

纹理是在屏幕上绘制东西的最快方法,绘制一个纹理映射到屏幕上的四边形,它应该足够快。当需要重新上载纹理数据时,请使用glTexSubimage2D进行更新。

不需要使用着色器。

票数 2
EN

Stack Overflow用户

发布于 2010-09-30 04:15:22

我还没有在OpenGL中做过任何着色器的工作,但在多次情况下,我用我在屏幕上方抛出的纹理来处理它,它非常有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3825446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档