问题标签 [jogl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6023 浏览

java - OpenGL - 纹理映射后无法渲染除白色以外的颜色

在渲染其他具有纹理的立方体后,我正在尝试渲染彩色立方体。我有多个符合 Drawer 接口的“Drawer”对象,我将每个对 GL 对象的引用传递给每个单独实现类的draw(final GL gl)方法。但是,无论我做什么,我似乎都无法渲染彩色立方体。

代码示例:

我也尝试在每个顶点调用之前抛出 glColor3f 调用,但这仍然给了我一个白色立方体。这是怎么回事?

0 投票
1 回答
2787 浏览

java - 从 JFrame 中删除 JPanel

我目前正在为使用 JOGL 设计的游戏制作介绍屏幕。我希望介绍是一个 JPanel,有几个按钮可以在开始游戏之前更改选项。

所以,我有 JFrame,我添加了一个 GLCanvas。GLCanvas 还包含一个 GLEventListener。最后,我添加了 JPanel。

我已经重写了 JPanel paintComponent 方法来设置背景图像。我在面板中有几个按钮。每当您单击“播放”按钮时,它都会调用一个函数,该函数执行以下操作:

frame.remove(JPanel); frame.repaint(); 动画师.start();

发生的情况是我的 JPanel 正确消失了,但是当调用 repaint 时,我的框架只是充满了灰色。我知道动画师正在正确启动,因为我的 GLEventListener 中的显示方法被调用。

有谁知道那里有什么问题?

0 投票
6 回答
6945 浏览

java - OpenGL中的平滑线

我正在尝试在 OpenGL 中绘制一条或多或少平滑的多段线。但是我发现如果线的厚度超过 3 左右,那么线段之间的连接就不是无缝的。他们之间有时会有差距。有没有一种使这些连接平滑无间隙的好方法?我正在寻找类似于 Java 中的 BasicStroke.JOIN_MITER 的东西。

0 投票
2 回答
6757 浏览

java - Java 游戏编程:JOGL 与 LWJGL?

我目前正在使用GTGE 引擎编写炮塔防御风格的游戏,该引擎能够使用 JOGL 或 LWJGL 来驱动图形,所以我想知道,我应该使用哪一个?每个的优点/缺点是什么?在决定时我应该考虑哪些因素?

0 投票
1 回答
2466 浏览

opengl - 当我每帧更新其位置时,OpenGL 灯闪烁

我正在学习 OpenGL,刚刚开始接触照明。我启用光照和光照 0,在我的 init 方法中将其环境/漫反射/镜面反射设置为默认值,然后每一帧我都执行以下操作:

(请注意,如果它有点错误,我正在使用 JOGL 用 Ja​​va 编写我的应用程序,所以我从每一行修剪了 gl. 和 GL.,以便为所有 C++ 人员提供更好的可读性:))

然后我继续绘制我的三角形等,最后我做了一个 glFlush()。

奇怪的问题是,当我运行我的应用程序时,指示灯会闪烁。在我的整个程序中,我没有对 glLightfv 的其他调用(如上所述,我的 init 方法中的调用除外,我已对其进行调试以确保它只运行一次)。它闪烁非常快,屏幕显示撕裂。在我的场景图中,我也没有 glDisable(GL_LIGHTING) ;并不是说我认为这会导致被点亮的物体闪烁。

出于调试目的,我还注释掉了我的绘图代码块,并且似乎没有任何东西破坏照明 - 当然,我写了所有这些并在照明场景之前对其进行了测试,所以我认为没有理由应该这样做错误的。

基本上我知道这没什么可做的,但是以前有没有其他人遇到过这个问题?有一些我找不到的简单解决方案吗?请索取任何可以帮助您帮助我的其他信息。最后,如果我根本无法得到答案,我可能不得不分解并编写一个测试用例,我可以在这里发布整个渲染代码并演示问题。

这是我试图制作的一个非常糟糕的动画 gif……但它有点显示我在说什么,就光是零星的而言。点亮的框架是它应该看起来的样子。此外,当我将其减慢到 5fps 时,它并没有那么多闪烁,更多的是随机打开或关闭。我不明白...

谢谢!!

0 投票
1 回答
132 浏览

frame - JOGL 四个空白初始帧

在 JOGL 中,有 addGLEventListener;我为它添加了一个监听器。当调用 display() “callback on gl”时,屏幕以黑色打印,但在四帧后display()打印一些东西。

如何display()在第一次回调时打印一些东西display()

0 投票
1 回答
632 浏览

jogl - JOGL ArcBall 不工作

我正在尝试将 JOGL 中 ArcBall 的现有实现嵌入到我自己的项目中。它编译并运行,但我不工作!我不能玩弄风景。

我从这里获取了实现(两个类):

http://www.mdimension.com/page/Software?appNum=1

并按照将事物嵌入到我自己的项目中的说明进行操作。这是我使用 ArcBall 的课程:

公共类 GLRenderer 实现 GLEventListener {

公共无效位置相机(GLU glu,GL gl){

}

公共无效setLight(GL gl){

}

公共无效drawXYZ(GL gl){gl.glMatrixMode(GL.GL_MODELVIEW);

}

}

我是 openGL 的新手,所以这可能是一个愚蠢的错误。不过,我将不胜感激。

谢谢

0 投票
3 回答
1829 浏览

opengl - 你能在同一点渲染两个透明的四边形吗?

我正在学习如何使用 JOGL 和 OpenGL 来渲染纹理映射的四边形。我有一个测试程序和一个测试四边形,我想出了如何启用 GL_BLEND 以便我可以指定一个顶点的 alpha 值来制作一个具有某种渐变的四边形......但现在我希望这个显示出来另一个纹理四边形在同一位置。

绘制具有相同顶点位置的两个四边形不起作用,它只渲染第一个四边形。那么这是可能的,还是我需要根据我想要的内容即时构建一个自定义纹理,然后用这个纹理绘制一个四边形?我真的希望在这种情况下利用混合的优势......

0 投票
1 回答
2906 浏览

opengl - OpenGL纹理组合不(总是)工作

如果你看过我最后的几个问题,你现在就会知道我一直在使用 OpenGL 处理地形问题。我尝试使用顶点 alpha 和多个渲染通道将一个纹理混合到另一个纹理中的平铺高度图中失败了……所以现在,我有了另一个计划。

我的 WorldQuad 对象有 'bottom' 和 'top' 变量,两者都是 Texture 类型。这是一个 JOGL 提供的封装 OpenGL 纹理的类;它为我加载它,然后我可以调用 enable() 让它执行 glEnable(GL_TEXTURE_2D),并调用 bind() 让它执行绑定。

它还有一个我自己类型的 alphaMap 变量,它存储了另一个纹理;但是这个是纹理内部格式 GL_ALPHA8 (换句话说,它是一个只有 alpha 值的纹理)。我目前以编程方式生成它以使其像素完美。

然后我使用 OpenGL“纹理组合”(或有时称为纹理喷溅)来根据 alpha 贴图组合底部和顶部纹理。

问题是,它工作得很好!......在我的工作笔记本电脑上。它是带有集成 Intel 芯片(GMA950 或类似芯片)的 IBM Thinkpad T400。但当我回到我的戴尔 Inspiron E1705 时,我发现我的程序只渲染了具有“底部”纹理的四边形。就好像根本没有应用 alpha。我还在两台台式机和另一台笔记本电脑上尝试过。其中一台台式机崩溃了,另一台显示四边形全白(它是旧的 GeForce 芯片,可能不支持 OpenGL 2 或其他东西),另一台笔记本电脑的性能与我的相同;覆盖在底部纹理中的四边形。

我已经尝试将 alpha 映射格式更改为 GL_RGBA,以防我的显卡由于某种原因不喜欢 GL_ALPHA8 纹理。我还验证了所有三个纹理都存在并且可以通过使用每个单独的纹理(包括 alphamap)绘制法线四边形来渲染。我还将 alphamap 输出到一个文件中,所以我基本上仔细检查了它是否存在并且应该可以工作。

下面是我基于所有这些绘制四边形的函数。我添加了评论,希望您能继续关注。请提出任何可能解决问题的建议。我难住了!为什么它可以在一个蹩脚的集成芯片上工作,而不是我的显卡?我错过了什么??

谢谢!!

编辑:好的,显然没有人可以帮助我......我现在回到工作岗位,将我的闪存驱动器插入我的工作计算机,启动 Eclipse 并点击运行按钮......它工作了。然后我把驱动器拿出来,放进我的个人笔记本电脑(我今天带去上班),做了同样的事情,它只是一个红色的斑点。但是在这里,我记录了它。首先,来自 glGetString(GL_EXTENSIONS) 的输出在两台计算机之间存在差异

接下来,损坏和工作的屏幕截图。同样,这些都是以完全相同的方式拍摄的:打开 Eclipse,按运行,截屏。就是这样。我没有碰我的代码,我的代码只有一个副本,在我在两台计算机之间交换的闪存驱动器上。它们都具有相同版本的 JDK。

现在,两台计算机之间的区别之一是我的工作 PC 运行的是 XP,而我的笔记本电脑运行的是 Windows 7。但这真的会有所作为吗?特别是因为我使用的是 OpenGL 2,我认为两台计算机都会同样支持它。事实上,如果你看看我上面的差异页面,我的个人笔记本电脑支持的扩展比工作笔记本电脑多得多——正如我所预料的那样,因为与英特尔集成相比,它是一个 nvidia 7900gs 卡。所以这似乎倒退了;如果有的话,我希望集成芯片会阻塞纹理组合,但不是我的显卡!

帮助!

0 投票
0 回答
4502 浏览

drawing - 在 JOGL 中使用鼠标拖动事件进行绘制。

好吧,我想我可能需要一些帮助。我是 JOGL 的新手,我正在尝试在 3d 画布上绘制任何东西,但重点是使用鼠标拖动事件。知道我怎么能做到这一点?

我尝试了以下方法,但没有成功。而且在下面的代码中,我不明白为什么 display() 方法在被调用之前被调用事件。

提前非常感谢..