Tag: lwjgl

透明背景的LWJGL窗口?

我想创建一个窗口,使得没有“黑色背景”区域,而是您可以看到任何其他打开的窗口,等等。 也就是说,渲染场景而只渲染场景,不留任何帧,也不留下背景区域。 我读过一个方法,涉及渲染到隐藏的OpenGL窗口并在内存中缓冲它,创建透明的分层窗口,以及从内存复制到透明窗口。 显然这是非常cpu /内存密集型的,所以我想知道在Java和LWJGL中是否有更好的方法可以做到这一点?

Java / OpenGL:将Canvas的图像作为BufferedImage

我有一些代码初始化OpenGL以呈现给java.awt.Canvas。 问题是,我无法弄清楚如何获取canvas的缓冲区并将其转换为BufferedImage。 我已经尝试重写getGraphics(),克隆Raster,并用自定义替换CanvasPeer。 我猜测OpenGL不会以任何方式使用java图形,那么我如何获得OpenGL的缓冲区并将其转换为BufferedImage? 我正在使用LWJGL的代码来设置父级: Display.setParent(display_parent); Display.create();

GLSL着色器:在两个以上纹理之间插值

我在OpenGL中实现了一个高度图。 现在它只是一个正弦/余弦弯曲的地形。 此刻,我在白色“冰”和深色“石头”纹理之间进行插值。 这样做是这样的: color = mix(texture2D(ice_layer_tex, texcoord), texture2D(stone_layer_tex, texcoord), (vertex.y + amplitude) / (amplitude * 2)) 结果: 它工作正常,但如果我想添加更多纹理(例如草纹理),插值顺序为“冰,石,草”,我该怎么办? 我认为,没有像mix(sampler2D[], percentages[])这样的函数? 我怎么能按照这个逻辑写一个GLSL方法?

显示时,LWJGL纹理会颠倒翻转

我按照教程阅读图片并从中创建纹理,然而,它在渲染时显示为颠倒翻转。 图像是两个的力量。 主要课程 public class Main { public static void main(String args[]) throws IOException{ Main quadExample = new Main(); quadExample.start(); } public void start() throws IOException { try { Display.setDisplayMode(new DisplayMode(1280,720)); Display.create(); } catch (LWJGLException e) { e.printStackTrace(); System.exit(0); } // init OpenGL GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); GL11.glOrtho(0, 1280, 0, 720, -1, 1); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glClearColor(0, 1, 0, […]

在LWJGL中更改OpenGL版本

所以我一直想知道如何在lwjgl中更改openGL版本..我知道我可以用维基上的PixelFormat和ContextAttribs更改版本http://lwjgl.org/wiki/index.php?title=Version_selection 但是如果我想把它降到更低的话,那只能把我降到最低3.2? 喜欢2.1甚至1.1? 有没有办法做到这一点?

LWJGL GLFW光标输入减慢程序速度

我使用GLFW 3.3在LWJGL 3中创建了一个程序,其中我使用Cursor回调来获取光标的位置。 但是当快速移动光标时,帧速率会下降。 没有光标回调一切正常。 左边的数字是每秒的帧数,右边的数字表示调用Cursorcallback的次数: 30 823 7 502 77 892 2110 44 3557 0 119 275 17 2069 14 1279 1 841 588 27 692 0 如果光标正常,隐藏或禁用,结果不会改变。 我也尝试使用glfwSwapInterval(1)和glfwWaitEvents()代替glfwPollEvents() glfwGetVersionString()返回“3.3.0 Win32 WGL EGL VisualC DLL”。 有谁为什么这会降低性能以及如何解决这个问题?

如何使用Slick2D / LWJGL中的“delta”或一般的游戏编程?

我所知道的是,delta在某种程度上与适应不同的帧速率有关,但我不确定它的确切含义以及如何在计算速度和不计算速度的数学中使用它。 delta声明在哪里? 初始化? 怎么用? 它的值(最小值,最大值)如何设定?

Java swing gui和lwjgl

一个简单的问题: 是否可以在同一窗口中查看java Swing库和lwjgl 3D场景的gui而无需使用任何其他gui库? 怎么样?

OpenGLException:禁用数组缓冲区对象时不能使用偏移量。在调用glEnable(GL_ARRAY_BUFFER)后的一行上?

我一直得到这个例外: Exception in thread “main” org.lwjgl.opengl.OpenGLException: Cannot use offsets when Array Buffer Object is disabled at org.lwjgl.opengl.GLChecks.ensureArrayVBOenabled(GLChecks.java:93) at org.lwjgl.opengl.GL11.glVertexPointer(GL11.java:2680) at Joehot200.TerrainDemo.render(TerrainDemo.java:2074) at Joehot200.TerrainDemo.enterGameLoop(TerrainDemo.java:3266) at Joehot200.TerrainDemo.startGame(TerrainDemo.java:3490) at StartScreenExperiments.Test2.resartTDemo(Test2.java:55) at StartScreenExperiments.Test2.main(Test2.java:41) 但是,数组缓冲区对象IS已启用! glEnableClientState(GL_VERTEX_ARRAY); glBindBuffer(GL_ARRAY_BUFFER, vboVertexHandle); glVertexPointer(3, GL_FLOAT, 0, 0L); 正如你所看到的,在glVertexPointer调用之前的两行(错误所在的那一行),然后我显然启用了数组缓冲区! 这有什么不对?

指针 – 减少内存消耗

我一直在为OpenGL练习编写Minecraft副本(我猜多少),但是在编写基本渲染API之后,我注意到真正的Minecraft使用了很多或内存 – 大约800MB! 我完全可以理解为什么这与它必须记住的所有块以及生成器的怪物和可能的地形数据…我问自己“这个块与那个块完全相同……它们可以在代码中吗? “ 并且记得C ++有指针,所以我试图在Java中做同样的事情我想到的唯一方法,创建每个块的一个静态实例而不使用new关键字,这是最好的方法吗? 它似乎肯定有帮助..如果可能的话,我仍然希望它更好吗? 这是有问题的课程.. public abstract class Block { public static DirtBlock Dirt = new DirtBlock(); public static GrassBlock Grass = new GrassBlock(); public static RedstoneOreBlock RedstoneOre = new RedstoneOreBlock(); public static TNTBlock TNT = new TNTBlock(); public static MonsterSpawnerBlock Monserspawner = new MonsterSpawnerBlock(); public static BedrockBlock Bedrock = new […]