标签: lwjgl

类名冲突导入新包(java)

首先,我是java的新手,所以我的问题可能是愚蠢但我仍然需要一个答案:)

我有一个处理显示问题的课程.我把它命名为"Display",但问题是:我需要导入一个名为org.lwjgl.opengl.Display的类.

当然,我在Display类语句中有这个错误:

"显示"已在此编译单元中定义

当然,我可以重命名我的班级,但我想确定没有办法轻易绕过这个问题.

一般来说(因为使用像LWJGL这样的游戏库,我想我会有很多这样的),为了避免类似的标签,我的班级前缀是一个更好的主意吗?

更新:该类已经在一个包中.

package Graphics;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class Display { ... }
Run Code Online (Sandbox Code Playgroud)

感谢名单.

java class lwjgl

6
推荐指数
1
解决办法
2万
查看次数

LWJGL,Clojure,OpenGL命令的单线程

简短问题:

鉴于Clojure的并发模型,我如何确保从同一个线程调用所有LWJGL OpenGL Update函数?

长问题

经过漫长而光荣的战斗,在Leiningen/Clojure中使用lwjgl,我现在让LWJGL + Leiningen + Clojure一起工作.

但是,根据LWJGL文档,似乎OpenGL客户端命令具有线程本地状态 - 如果我从不同线程调用OpenGL命令,Bad Things(TM)可能会发生.

因此,我的问题是:在Clojure中,设置类似Swing Threads(但我不能使用Swing Threads /必须自己设置)的正确方法是这样的:

(1)有一个主线程负责所有OpenGL调用

(2)其他线程与此主线程进行某种类型的通信以协调OpenGL调用

我的背景

我熟悉C/C++中的线程.我熟悉Clojure的agent/atom/ref模型.但是,我不熟悉Clojure中的"手动"并发/线程.

谢谢!

concurrency multithreading clojure lwjgl

6
推荐指数
1
解决办法
1336
查看次数

OpenGL 3(LWJGL)LookAt Matrix混乱

我正在使用LWJGL学习OpenGL 3.我试图实现一个等效的gluLookAt(),虽然它的工作原因我有点困惑为什么.

我承认只是从网络上的各种来源复制这些代码,但经过深入研究后,我认为理解它背后的数学,并且我理解LWJGL在做什么.

但是,"正确" gluLookAt代码在我的应用程序中表现不正确,因为相机似乎转向了错误的方式.我只设法获得通过转置正交向量的工作我的代码forward,side以及up(希望我使用的是正确的术语!),我敢肯定是错误的...

private static final Vector3f forward = new Vector3f();
private static final Vector3f side = new Vector3f();
private static final Vector3f up = new Vector3f();
private static final Vector3f eye = new Vector3f();

public static Matrix4f lookAt(float eyeX, float eyeY, float eyeZ, 
                              float centerX, float centerY, float centerZ, 
                              float upX, float upY, float upZ) {
    forward.set(centerX - eyeX, centerY - eyeY, centerZ - eyeZ);
    forward.normalise();

    up.set(upX, upY, …
Run Code Online (Sandbox Code Playgroud)

java opengl matrix lwjgl glulookat

6
推荐指数
1
解决办法
4901
查看次数

无法让LWJGL使用IDEA和SBT运行

我一直在头脑中挣扎了一个多小时,谷歌似乎无法给我一个决定性的答案.

我正在使用IntelliJ IDEA 13.1.3scala和sbt插件Scala 2.11.1,和SBT 0.13

我认为我很聪明,我将LWJGL的Maven存储库添加到了我的build.sbt中

libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl" % "2.9.1"
Run Code Online (Sandbox Code Playgroud)

后来发现我需要[ 将编译器指向LWJGL原生 ].

现在问题是:要求SBT下载库,不要将它们放在任何项目的目录中,这使得指向库有点困难.

我尝试使用[ sbt-lwjgl-plugin ]没有任何运气,甚至强迫像文档建议的早期版本的SBT.

所以我发现自己处于僵局,我该怎么办?手动下载库并将其转储到项目目录中?或者我有更自动的方式来处理这个问题?

dependencies scala intellij-idea lwjgl

6
推荐指数
1
解决办法
1184
查看次数

Lwjgl 3,如何在当前线程中获取OpenGL上下文当前?

我在LWJGL 3中使用OpenGL,我得到以下错误;

Exception in thread "main" java.lang.IllegalStateException: There is no OpenGL context current in the current thread. at org.lwjgl.opengl.GL.getCapabilities(GL.java:157) at org.lwjgl.opengl.GL11.getInstance(GL11.java:1390) at org.lwjgl.opengl.GL11.glClearColor(GL11.java:1842) at com.base.engine.RenderUtil.initGraphics(RenderUtil.java:13) at com.base.engine.Main.<init>(Main.java:14) at com.base.engine.Main.main(Main.java:24)

这是RenderUtil类,其中从我的主类的构造函数中调用initGraphics.在使用GLFW创建窗口后,我也尝试调用initGraphics,它也生成了类似的错误消息.

package com.base.engine;

import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL30.*;

public class RenderUtil {

    public static void clearScreen() {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    }

    public static void initGraphics() {
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

        glFrontFace(GL_CW);
        glCullFace(GL_BACK);
        glEnable(GL_CULL_FACE);
        glEnable(GL_DEPTH_TEST);

        glEnable(GL_FRAMEBUFFER_SRGB);
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,我不使用多线程.要创建一个窗口,我Window.createWindow(1366, 768, "Test");从main方法中调用该方法.

    private static Long window;

    public static String createWindow(int …
Run Code Online (Sandbox Code Playgroud)

java opengl lwjgl

6
推荐指数
1
解决办法
9597
查看次数

带有 lwjgl 的任务栏图标?

我想为我在 Windows 7 上运行的 lwjgl 进程添加一个任务栏图标。

Display.setIcon 成功更改了窗口左上角的图标,但不在任务栏中。

做什么?

我的代码,类似于:

ArrayList<ByteBuffer> byteBuffers = new ArrayList<ByteBuffer>();
byteBuffers.add( ImageHelper.loadImageAsIconImage("stickmanicon32x32.png") );
byteBuffers.add( ImageHelper.loadImageAsIconImage("stickmanicon16x16.png") );
System.out.println( "taskbaricon result: " + Display.setIcon(byteBuffers.toArray(new ByteBuffer[]{})) );
Run Code Online (Sandbox Code Playgroud)

我也尝试添加 40x40 图像,但没有变化。

java windows taskbar lwjgl windows-7

5
推荐指数
1
解决办法
7910
查看次数

移动/调整大小期间 opengl 窗口冻结

我正在使用 LWJGL 开发游戏。在移动窗口时(计划在未来添加调整大小的代码),渲染循环冻结。我希望它在移动时继续以某种方式运行。LWJGL 不包括 glutMainLoop。

Display 属于 OpenGL,而不是 Java。

相关代码:

    regular = new DisplayMode(800,600);
    GL11.glClearColor(0.47f,0.55f,1.0f, 0.0f); 
    GL11.glClearDepth(1.0f); 
    try {
        Display.setDisplayMode(regular);
        Display.setTitle("Game Name");
        Display.setIcon(loadIcon("resources/icon.png"));
        Display.create();
        seedresult= new Random(seed);
    } catch (LWJGLException e) {
        e.printStackTrace();
    }
    while (!Display.isCloseRequested()) {
    Display.sync(60);
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
    //render objects
    Display.update();}
    System.exit(0);
Run Code Online (Sandbox Code Playgroud)

java opengl lwjgl

5
推荐指数
1
解决办法
3068
查看次数

LWJGL 顶点着色器 gl_PointSize 不起作用

我正在尝试更改 LWJGL 中顶点着色器中点的大小,但无法使其正常工作。如果我尝试从着色器更改点大小,则点大小始终为 1px。

顶点着色器:

void main(){
   gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex;
   gl_PointSize = 10.0;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

void main(){
   gl_FrontColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)

绘制代码:

glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, p_vbo);
glVertexPointer(3, GL_FLOAT, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, c_vbo);
glColorPointer(4, GL_FLOAT, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, particles_num);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
Run Code Online (Sandbox Code Playgroud)

我的目标是动态更改点大小,但我无法从着色器更改点大小。如果我调用此代码:

glPointSize(10.0f);
Run Code Online (Sandbox Code Playgroud)

从 java 开始,大小发生了变化,但我希望能够为每个点做到这一点。我已经启用了我的着色器来改变点的大小:

glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
Run Code Online (Sandbox Code Playgroud)

澄清一下:我可以渲染我的所有点,并且一切正常,但点大小始终为 1px。我也没有使用平滑点。

编辑:glGetFloat(GL_POINT_SIZE_RANGE) 返回 1.0,这应该表明我的硬件不支持 1.0 以外的其他点大小。但如果我修改我的绘制代码:

glDrawArrays(GL_POINTS, 0, particles_num);
Run Code Online (Sandbox Code Playgroud)

到:

for (int i = 0; i < particles_num; i++) {
   glPointSize(massBuff.get(i));
   glDrawArrays(GL_POINTS, i, 1);
}
Run Code Online (Sandbox Code Playgroud)

在 massBuff 包含值为 1f - 10f …

java opengl shader lwjgl glpointsize

5
推荐指数
1
解决办法
2018
查看次数

LWJGL 'java.lang.UnsatisfiedLinkError':java.library.path 中没有 lwjgl

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at org.lwjgl.Sys$1.run(Sys.java:73)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
        at org.lwjgl.Sys.loadLibrary(Sys.java:95)
        at org.lwjgl.Sys.<clinit>(Sys.java:112)
        at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
        at org.lorana.client.Lorana.<init>(Lorana.java:20)
        at org.lorana.client.Lorana.main(Lorana.java:31)
Run Code Online (Sandbox Code Playgroud)

在我将所有本机库链接到每个引用的库并按照http://ninjacave.com/lwjglwitheclipse的说明进行操作后,错误仍然存​​在

我还关注了板上关于 lwjgl unsatisfiedlinkerrors 的其他问题,但无济于事。

非常感谢您的帮助,提前致谢!

java lwjgl unsatisfiedlinkerror

5
推荐指数
1
解决办法
4575
查看次数

如何将 OpenGL 显示(由 OpenGL 创建的窗口)设置为最大化?

我想将我的 OpenGL 显示设置为最大化。

我可以让用户手动完成,如果我setResizeable(true)然后让玩家点击最大化按钮,正如测试人员所说,这对用户来说是一个痛苦和不必要的步骤。

我可以将显示尺寸设置为与玩家屏幕相同的尺寸,但这看起来很奇怪,而且我不是在寻找全屏模式。

显然我已经可以全屏并设置显示大小,但我目前无法找到任何实际上允许我实际最大化显示的方法。

如果你不明白全屏和最大化之间的区别(Meta Stack Overflow 讨论),那么这里是Maximized的描述,这里是Fullscreen的描述。

opengl lwjgl

5
推荐指数
1
解决办法
1275
查看次数