问题标签 [lwjgl]

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 投票
3 回答
8086 浏览

java - 如何使 LWJGL 窗口可调整大小?

我正在尝试使我的 java 游戏的窗口可调整大小,它使用 LWJGL 库。根据一些可以追溯到 2007 年的论坛问题,这只能通过解决方法来实现。今天仍然如此吗?什么是要走的路?

0 投票
2 回答
1756 浏览

java - JFrame + Canvas:为什么在调用 glViewport 时会出现 NUllPointerException?

我创建了一个带有画布的 JFrame,如下面的代码所示。我要做的是在屏幕大小更新时使openGL上下文调整大小。这应该像调用 glViewport() 一样简单,我在名为 resize() 的事件处理程序中执行此操作。然而,这会导致:

我完全一无所知。从画布大小返回的边界似乎没问题,但是一旦我在视口上使用它们,它们就会抛出错误。当我改为像“glViewport(1, 1, 100, 100)”那样进行视口调用时,也会发生同样的情况。所有这些值都在窗口的边界内,但是当我调整窗口大小时它仍然会抛出相同的 nullPointerExceptions。

我没有想法和精力来找出原因(我已经在谷歌上搜索了 3 个小时,没有结果)。我究竟做错了什么?

0 投票
4 回答
6684 浏览

java - Java2D 能像 LWJGL 和 JOGL 一样快吗?

我听说 Java2D 在幕后使用 OpenGL 进行渲染,我想知道是否值得为我的程序使用 JOGL 以及它的所有本机库,这只是一个 2D 横向滚动条。我听说您必须使用某些技术和需要避免的场景以确保正在使用硬件加速,但我不知道它们是什么(嗯,我知道一些,但我还没有找到它们的完整列表。)。

0 投票
3 回答
672 浏览

java - 我需要一个通过命令行启动 Slick 2D/LWJGL Java 项目的解决方案。帮助?

目前我正在通过这个批处理文件启动我的 Slick 2D 应用程序-

其中 lib 是包含 LWJGL/Slick 库的文件夹,而 myapp.jar 是我的应用程序。

尽管这既简单又有效,但我希望不必一直运行脚本并实际创建一个 java .jar 来执行此操作。

所以我的问题是,我将如何将此批处理脚本“转换”为 Java 代码?

0 投票
1 回答
457 浏览

eclipse - 基本 JOGL 程序 java.lang.NoClassDefFoundError

我正在尝试开始使用LWJGL来显示一些 2D 图形。我之前(用 C 语言)使用 openGL 编写过,但我使用此处找到的代码只是为了了解如何使其工作。我导入 .jar 并且程序编译正常,但出现运行时错误:

如果我评论该行,我只会在其他地方得到一个 ClassLoader,但仍然使用 Display 类。我已经尝试了 .jar 位置等的各种配置,但似乎没有解决这个问题。

我在 Mac OS 10.6.6 上使用 Eclipse Helios

0 投票
1 回答
1388 浏览

java - OpenGL中的矩阵变换

我正在使用 OpenGL(来自LWJGL)在 Java 中构建一个 2D 物理引擎来显示对象。我遇到的问题是,我应用于框架的转换矩阵似乎以与它所说的不同的顺序被应用。

在 renderFrameObjects() 中,我应用旋转、平移、绘制对象(网格坐标相对于对象的 x、y)、反向平移和反向旋转。然而,当对象旋转(碰撞时)时,它产生的效果类似于应用平移然后旋转(即围绕半径上的点旋转)时的效果。在尝试了各种转换组合后,我似乎无法弄清楚这一点。

任何帮助,将不胜感激。

0 投票
1 回答
443 浏览

opengl - 使用 lwjgl 的 Opengl 压缩纹理

我在 ByteBuffer 中加载了一个 DXT1 纹理,我正在尝试使用 Opengl 加载它

它在 glCompressedTexImage2D 调用上给了我错误“无效操作”。似乎无法弄清楚为什么。

0 投票
1 回答
5184 浏览

java - 透明 PNG 在 LWJGL 中不透明

我有一个透明背景的 PNG,我正在尝试使用 LWJGL 显示它。但它不是透明背景,而是黑色不透明背景。我正在遵循“太空侵略者”示例中的代码。

这是我的代码。我为它的长度道歉,但我无法进一步削减它并仍然显示图形。“ball.png”是具有透明背景的 256x256 图像。

0 投票
2 回答
5240 浏览

java - 2D 地图创建

我是地图创建和数组存储的新手,想知道是否可以在任务中获得一些帮助。如果有任何帮助,我正在使用 Java 并使用 LWJGL 库。

我并不想抄袭任何其他游戏,所以它会与任何其他游戏不同。我基本上只需要不同的区域,比如水、草和泥土。我最终会添加山脉和丘陵以及攀爬等。

我需要知道如何实现这一点,如果可以的话,就像我说的那样,我是新手,所以我没有任何代码可以让你知道我的水平。

如果您可以提供帮助,请留下答案,我也希望得到尽可能多的帮助。

0 投票
1 回答
1816 浏览

java - 使用 Opengl FBO 时出现可怕的性能损失

我已经使用 lwjgl (opengl) 成功实现了一个简单的二维游戏,其中对象随着远离玩家而逐渐消失。这种淡化最初是通过计算从玩家到每个对象的原点的距离并使用它来缩放对象的 alpha/opacity 来实现的。

然而,当使用较大的对象时,这种方法显得有点过于粗糙。我的解决方案是为对象中的每个像素实现 alpha/opacity 缩放。这不仅看起来更好,而且还将计算时间从 CPU 转移到 GPU。

我想我可以使用 FBO 和临时纹理来实现它。
通过绘制到 FBO 并使用特殊的混合模式使用预先计算的距离图(纹理)对其进行遮罩,我打算实现这种效果。算法是这样的:

0) 初始化 opengl 并设置 FBO
1) 将背景渲染到标准缓冲区
2) 切换到自定义 FBO 并清除它
3) 渲染对象(到 FBO)
4) 使用距离纹理遮罩 FBO
5) 切换到标准缓冲区
6) 临时渲染 FBO纹理(到标准缓冲区)
7)渲染 hud 元素

一些额外的信息:

  • 临时纹理具有与窗口相同的大小(因此是标准缓冲区)
  • 第4步使用特殊的混合模式来达到想要的效果:
    GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_SRC_ALPHA);
  • 我的临时纹理是使用 min/mag 过滤器创建的:GL11.GL_NEAREST
  • 数据分配使用: org.lwjgl.BufferUtils.createByteBuffer(4 * width * height);
  • 纹理初始化使用: GL11.glTexImage2D( GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, dataBuffer);
  • 我的代码中没有 GL 错误。

这确实达到了预期的结果。然而,当我进行一些性能测试时,我发现我的 FBO 方法会削弱性能。我通过请求 1000 次连续渲染并测量时间来进行测试。结果如下:

在 512x512 分辨率下:

  • 正常:~1.7s
  • FBO:~2.5s
  • (FBO - 第 6 步:~1.7 秒)
  • (FBO - 第 4 步:~1.7 秒)

在 1680x1050 分辨率下:

  • 正常:~1.7s
  • FBO:~7s
  • (FBO - 第 6 步:~3.5 秒)
  • (FBO - 第 4 步:~6.0s)

正如你所看到的,这真的很糟糕。更糟糕的是,我打算做第二次这种类型的传球。就我的目标受众而言,我测试的机器应该是高端的,所以我可以预期人们使用这种方法的帧率远低于 60 fps,这对于这么简单的游戏来说是难以接受的。

我能做些什么来挽救我的表现?