Java OpenGL着色器?

Java OpenGL着色器?,java,opengl,gpu,Java,Opengl,Gpu,我正在用Java编写一个游戏,LJGWL(OpenGL)。我正在使用一个为我处理大量混乱细节的库,但需要找到一种更快的方法来实现这一点 基本上,我想把屏幕上的每个像素都设置为尽可能快的随机颜色。“随机颜色”只是一个数组[][],每2-3秒更新一次。我曾经尝试过绘制矩形和使用图像,这两种方法对于我想要做的事情来说都非常慢 我想我想学习如何编写GPU着色器?这是最快的方法吗?LJGLAPI向java公开了OpenGLAPI。有关于如何开始使用OpenGL着色器的基本教程吗?或者我应该动态创建某种纹理

我正在用Java编写一个游戏,LJGWL(OpenGL)。我正在使用一个为我处理大量混乱细节的库,但需要找到一种更快的方法来实现这一点

基本上,我想把屏幕上的每个像素都设置为尽可能快的随机颜色。“随机颜色”只是一个数组[][],每2-3秒更新一次。我曾经尝试过绘制矩形和使用图像,这两种方法对于我想要做的事情来说都非常慢


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

纹理是在屏幕上绘制东西的最快方法,在屏幕上绘制纹理贴图四元体,应该足够快。当需要重新加载纹理数据时,请使用glTexSubimage2D对其进行更新


不需要使用着色器。

我还没有在OpenGL中使用任何着色器,但在多次使用相同的场景时,我使用在屏幕上方抛出的纹理处理它,效果非常好。

我不知道您是如何精确绘制像素的,但是,您达到的这个限制可能是由于您传输的数据量(效率低下?)造成的。每2-3秒更新一个充满像素的屏幕应该一点也不难。虽然着色器使您更接近图形卡,但它们永远不会快速生成低效的方法,因此

为什么你的代码这么慢

  • 什么代码?你到底尝试了什么代码?您使用了什么纹理,渲染到
  • 慢吗?多慢?你预计它会有多快
  • 视频ram中1920x1080(?)像素的速度有多快,您的硬件、驱动程序和操作系统是什么

  • 我认为在我们帮助您解决问题之前,您需要编辑/重新发布。仅仅因为它很慢,并不能保证着色器甚至会快一点

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


    我还没有写任何着色器,所以我不能推荐任何好的资源。但这是了解缓冲区对象的好地方。(他的例子是C++)

    相同像素的每个像素,或者每个像素到不同的随机颜色+ 1,另一个提示是使用PBO来存储这些“随机像素”数据。