Articles of lwjgl

为什么我的碰撞实现会导致我的玩家在发生碰撞时“反弹”?

我有一个玩家多边形,我用这个方法检查它是否与我的平铺地图相碰撞: public static boolean playerCollisionWith() { for(int i = 0; i < Blockmap.entities.size(); i++) { Block entity1 = (Block) Blockmap.entities.get(i); if(playerPoly.intersects(entity1.poly)) { return true; } } return false; } 这将正常工作,但我正在使用不同的方法进行移动。 而不是只为玩家的X轴添加速度variables。 我像这样移动: if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { speedX = Math.min(5, speedX + 1); moving = true; playerPoly.setX(x); if(playerCollisionWith()) { speedX = -5; playerPoly.setX(x); } } 那Math.min电话是什么搞砸了我。 我不能直接调用speedX = […]

lwjgl请求在未修饰时显示closures

我想为我的显示/窗口创建一个自定义的标题栏/边框,所以我将相应的系统属性设置为“true”,但是如何手动发送一个closures请求到窗口以响应Display.isCloseRequested() ?

告诉我的着色器何时使用哪个纹理

所以我设法通过GLSL着色器进行纹理化,我可以通过一个sampler2d textureHandler +我的uv坐标到我的着色器来指定要在我的Tiles上显示的纹理。 现在即时通讯想知道如何可以定义哪个瓷砖应该得到哪个纹理原因,现在我只能把所有的瓷砖1单纹理我有… 我的顶点着色器: in vec3 position; in vec2 vertexUV; uniform mat4 orthoMatrix; out vec2 UV; void main() { gl_Position = orthoMatrix * vec4(position, 1.0); UV = vertexUV; } 我的片段着色器: in vec2 UV; out vec4 outColor; uniform sampler2D myTextureSampler1; void main() { outColor = texture2D(myTextureSampler1, UV); } 我的纹理加载现在看起来像这样: http : //puu.sh/62MhS.png

如何使用LWJGL顶点缓冲区对象?

我一直在学习如何使用LWJGL制作游戏一段时间,在线观看YouTube教程,但是我最近在理解顶点缓冲区对象时遇到了一些问题。 我已经看过几个教程,包括LWJGL Wiki的教程,但是我仍然不明白如何使用它们。 有人可以澄清如何使用顶点缓冲区对象? 我了解它背后的代码,但我不知道它应该如何使用。 我知道VBO应该只创建一次,并渲染每个帧/循环。 但是我的主要问题是,每个游戏有一个顶点缓冲区对象还是每个对象要绘制一个? 另外,维也纳国际中心和交错的维也纳国际中心之间有什么区别?

玩家和高度图之间的碰撞

编程一个小型项目,一个opengl高度图。 它是三角形的构建,这些点适合正确的位置(从图像中读出)。 玩家被长方体复制。 (p1,p2,… p8)。 现在,我想实现玩家和高度图之间的碰撞检测。 我想把立方体分裂成整个世界,然后立方体再次立方体,然后在这个立方体中分配高度图的三角形(然后检查包含玩家的大立方体,小立方体,然后检查所有三角形碰撞)。 但是,哪种碰撞检测方法是最好的,我怎么实现呢? (顺便说一下,即时通讯使用lwjgl [java])

我怎样才能用Slick制作一个声音系统?

我的问题是,如何在slick-util下开发一个易于使用的音响系统? 在function下 a.playAsSoundEffect(1, 1, true, x, y, z); 它已经可以为源创建一个静态位置。 但是如果我在游戏中调整我的CameraPosition。 那么我怎样才能在Slick中改变听众的位置呢? 答案将是真棒:)谢谢,Mineorbit!

为什么OpenGL会忽略GL_DEPTH_TEST设置?

我不知道为什么我的一些对象被渲染在彼此之上。 我有深度testing。 glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); 我是否需要按照距离相机最近的顺序进行绘制? (我以为OpenGL是为你做的。) 设置代码: private void setUpStates() { glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightModel(GL_LIGHT_MODEL_AMBIENT, BufferTools.asFlippedFloatBuffer(new float[]{0, 0f, 0f, 1f})); glLight(GL_LIGHT0, GL_CONSTANT_ATTENUATION,BufferTools.asFlippedFloatBuffer(new float[]{1, 1, 1, 1}) ); glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_DIFFUSE); glMaterialf(GL_FRONT, GL_SHININESS, 50f); camera.applyOptimalStates(); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_TEXTURE_2D); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); } 渲染代码: private void render() { // […]

如何以波形的方式扭曲graphics?

随着时间的推移,我在多个游戏中看到了一定的graphics失真效果,并有兴趣在2D中做这个。 它就像波浪般的纹理扭曲,我不完全确定它实际上叫做什么。 超级马里奥64有一个类似的效果,当你根据你的位置( https://www.youtube.com/watch?v=H6r5oF73gNI#t=72 )进入一幅画,Braid也有一个更类似于当您使用时间环( https://www.youtube.com/watch?v=uqtSKkyJgFM#t=38 )时,我正在尝试达到的效果。 我真的很想知道这些效果是如何实现的,以及是否支持LWJGL(甚至Slick2D)中的类似function。 到目前为止,我完全没有解释它是如何完成的。

Slick2D在某些机器上的Image.getGraphics()上崩溃

在某些机器上,创建一个新的Image并调用getGraphics()会导致lwjgl进入某种故障状态,当交换缓冲区时会崩溃。 任何想法是什么原因造成的,以及如何使Slick自行清理后正确的? 复制代码: package crashrepro; import org.newdawn.slick.*; public class CrashRepro extends BasicGame { public static void main(String[] args) throws Exception { CrashRepro cr = new CrashRepro("CrashRepro"); // Crash only happens in fullscreen mode. AppGameContainer agc = new AppGameContainer(cr, 800, 600, true); agc.start(); } public CrashRepro(String title) { super(title); } @Override public void init(GameContainer gc) throws […]

在LWJGL中旋转挥动的剑给出了更加奇妙的结果

我正在使用LWJGL(本质上是OpenGL)在Java中进行一个2D自上而下的游戏。 我最近试图添加一个摆动的剑机制。 我的坐标系统设置在左下角的所有对象。 旋转工作,但它发生在剑四的左下角。 我希望它以底线的中心作为旋转的枢轴旋转。 我尝试了很多来自互联网的解决scheme,例如: 将对象转换为原点(屏幕的0,0),然后旋转,然后转换为枢轴点。 平时翻译对象,然后旋转,然后再翻译到你想要的点。 但他们都产生了奇怪的结果。 代码如下: 剑类: public class Sword extends GameObject { private static int speed = 5, deg = 0;; private Texture tex; public Sword(float x, float y, ObjectId id) { super(x, y, id); //tex = ImageLoader.loadTexture(null, null); } protected void update(ArrayList<GameObject> objects) { if(deg < 360) deg += […]