Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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如何处理非OpenGL图形?_Java_Opengl - Fatal编程技术网

Java OpenGL如何处理非OpenGL图形?

Java OpenGL如何处理非OpenGL图形?,java,opengl,Java,Opengl,使用OpenGL渲染的图形能否与不使用OpenGL渲染的图形一起工作 我正开始学习OpenGL,但当涉及到用OpenGL实际编写所有代码时,我仍然很害羞,我觉得用JPanel或Canvas绘制它们更舒服。我假设它不会在代码方面引起太多问题,但同时显示它可能会引起问题?还是我被一个或另一个困住了?你被一个或另一个困住了。不能将它们放在一起。将OpenGL图形与另一个非OpenGL图像集成或渲染归结为合成图像。您可以在OpenGL中获取2D图像并将其作为纹理加载,这样您就可以使用该纹理在OpenGL

使用OpenGL渲染的图形能否与不使用OpenGL渲染的图形一起工作


我正开始学习OpenGL,但当涉及到用OpenGL实际编写所有代码时,我仍然很害羞,我觉得用JPanel或Canvas绘制它们更舒服。我假设它不会在代码方面引起太多问题,但同时显示它可能会引起问题?还是我被一个或另一个困住了?

你被一个或另一个困住了。不能将它们放在一起。

将OpenGL图形与另一个非OpenGL图像集成或渲染归结为合成图像。您可以在OpenGL中获取2D图像并将其作为纹理加载,这样您就可以使用该纹理在OpenGL中绘制曲面,或者按照您的问题所建议的,绘制背景。或者,您可以使用OpenGL中的帧缓冲区将OpenGL场景渲染为纹理,然后将其转换为2D位图并与其他图像组合

当然,这种方法也有局限性。一旦OpenGL场景被移动到2D图像,通常会丢失所有深度(如果您想这样做,可以在图像中的其他通道中保留深度,但这将涉及额外的工作)

此外,由于您可能希望一个图像不只是覆盖另一个图像,因此必须在其中一个图像中包含alpha(透明度)通道,以便在组合它们时,未绘制的区域最终将显示基础图像

但是,我建议您努力找到一个满足您所有需求的渲染API。从长远来看,合并两个API的渲染输出所做的额外工作可能会浪费精力。将OpenGL控件嵌入到封闭的应用程序中是一回事,该应用程序使用更传统的API(如AWT)呈现许多控件。另一方面,尝试将OpenGL和另一个渲染API的输出合成到同一输出区域是非常不寻常的


如果你能提供一个更具体的例子来说明你所说的渲染类型,人们可能会提供更有用的建议。

我很确定,在一个窗口中,可以将OpenGL视图和其他视图层叠在一起。你将如何打开窗口?取决于使用的UI库。也许在OGL的swing jframe中有一块JOGL画布,在上面有一个普通的jframe。如果你对使用OpenGL感到不舒服,那么为什么要首先使用OpenGL呢?OpenGL不是一个3D引擎。OpenGL不是一个场景图。OpenGL只是一个将点、线或三角形放到屏幕上的绘图库。OpenGL中没有场景,也没有模型。因此,从概念上讲,OpenGL与使用画布没有太大区别。绘图工具只是稍微复杂一点(但级别相当低)。