Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Java opengl/JOGL-绘制纹理的最佳方法_Java_Opengl_Textures_Draw_Jogl - Fatal编程技术网

Java opengl/JOGL-绘制纹理的最佳方法

Java opengl/JOGL-绘制纹理的最佳方法,java,opengl,textures,draw,jogl,Java,Opengl,Textures,Draw,Jogl,我想到了在OpenGL/JOGL中绘制图片的最佳方法。 我目前正在编写一个游戏,我的目标是将有关图片的信息保存在文本文件中,而不是保存图片。 我的想法是编程一种方法,在X和Y的位置保存每个像素信息(RGB)。 然后我画每一个像素,它就完成了 你觉得这个想法怎么样?你应该简单地使用TextureIO从你的图片中创建一个纹理,并在绘制时将该纹理与具有一些纹理坐标的4个顶点一起使用。glReadPixels()速度非常慢,读取图片的每个像素需要花费大量时间,将其内容保存为文本文件需要大量内存(将其保存

我想到了在OpenGL/JOGL中绘制图片的最佳方法。 我目前正在编写一个游戏,我的目标是将有关图片的信息保存在文本文件中,而不是保存图片。 我的想法是编程一种方法,在X和Y的位置保存每个像素信息(RGB)。 然后我画每一个像素,它就完成了


你觉得这个想法怎么样?

你应该简单地使用TextureIO从你的图片中创建一个纹理,并在绘制时将该纹理与具有一些纹理坐标的4个顶点一起使用。glReadPixels()速度非常慢,读取图片的每个像素需要花费大量时间,将其内容保存为文本文件需要大量内存(将其保存为压缩图像,以无损格式保存,如PNG,可能值得一试),逐个绘制每个像素比绘制纹理要慢得多。德哈斯是对的。可以对图片进行矢量化(从中生成SVG),但之后必须对其进行栅格化,或者必须对矢量化内容进行一些渲染,这可能比使用纹理要慢。我不确定你真的需要屏幕外的缓冲区


当我开始研究我的第一人称射击游戏时,我也遇到了类似的问题。一开始我没有使用JOGL,我重用了其他人的源代码,它依赖于图像中的软件渲染,速度非常慢。然后,我用JOGL一个一个地画每个像素,而不是用Java2D,在我的机器上它大约快4倍,但对我来说仍然非常慢。最后,我不得不重新设计整个渲染以使用OpenGL,正如derhass所说,我使用了三角形、四边形和纹理。性能变得可以接受,这是您应该做的,使用OpenGL绘制基本体并阐明您想要实现的目标,以便我们可以帮助您更好地完成任务。

您希望在这里实现什么?直接将像素写入帧缓冲区与opengl的用途相反,如果您实际使用GL模拟此功能,则会导致非常低的性能。