- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我转而使用 GLCanvas 中的 GLJPanel 来避免某些闪烁问题,但这本身就造成了一些意想不到的后果。
从我目前收集到的信息来看,GLJPanel 每次调整大小时都会调用 GLEventListener.init(),如果我很幸运,否则我的模型将完全消失。
我试过调试它,但我无法纠正这种行为。这是我的 init() 函数:
gl.glShadeModel( GL.GL_SMOOTH );
gl.glEnable( GL.GL_DEPTH_TEST );
gl.glDepthFunc( GL.GL_LEQUAL );
gl.glDepthRange( zNear, zFar );
gl.glDisable( GL.GL_LINE_SMOOTH );
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable( GL.GL_BLEND );
gl.glBlendFunc( GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA );
// set up the background color
gl.glClearColor( ((float)backColor.getRed () / 255.0f),
((float)backColor.getGreen() / 255.0f),
((float)backColor.getBlue () / 255.0f), 1.0f);
gl.glEnable ( GL.GL_LIGHTING );
gl.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, Constants.AMBIENT_LIGHT, 0 );
gl.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, Constants.DIFFUSE_LIGHT, 0 );
gl.glEnable ( GL.GL_LIGHT0 );
gl.glTexEnvf( GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE );
gl.glHint( GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST );
// code to generate model
除了从 init() 中删除所有内容并将其添加到我的 display() 函数之外,还有什么办法可以解决这个问题吗?考虑到 GLJPanel 的 init() 和 reshape() 行为,我不确定这是否会修复它。
最佳答案
就 JOGL 而言,GLJPanel 和 CLCanvas 在功能上基本相同。唯一的区别是 GLJPanel 是 JComponent 和轻量级,而 GLCanvas 是 Component 和重量级。您看到的任何问题很可能不是由这些差异造成的(尽管 JOGL 不是 Java 中最稳定的部分,并且可能存在“未记录”的差异)。
消失的模型可能是由于实际上没有调用绘制代码,或者在 GL 初始化中错误设置了某些东西(很容易做到)。我建议将所有内容都转移到 display() 函数。如果问题解决了,它会一次一个地向后移动(这只是一个性能问题)。
话虽如此,我没有看到您在 init() 中设置视口(viewport)大小。这是每次窗口大小更改时必须做的事情之一。
关于java - 使用 JOGL 调整 GLJPanel 的大小会导致我的模型消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389978/
我一定是愚蠢之类的,但我在网上查看了几个 JOGL 示例,它们在 JOGL 中使用了 GL 接口(interface)的 color3f 方法,但是编译器提示找不到该方法,当我检查时javadoc我确
我从 here 下载了 jogl 2.0 ,文件 jogl-all.jar ,并运行了一个取自 here 的简单代码示例: import java.awt.event.KeyEvent; import
嗨,大家好 我在 JOGL 项目中添加拾取对象时遇到了麻烦。 我知道这可以通过选择缓冲区来完成..但我找不到例子 任何人? 最佳答案 一般来说,正如您可能知道的那样,JOGL 代码直接从您可能在网络上
我找不到有关在 JOGL 中呈现交错顶点数组(不是 VBO)的正确方法的任何信息。具体来说,使用 glVertexAttribPointer() 似乎不允许指定交错数据(FloatBuffer)内的偏
鉴于我从 JOGAMP wiki 获得的这个简单示例,为什么鼠标坐标在 y 方向上偏离 40,在 x 方向上偏离 20?单击屏幕右下角会显示坐标 (620, 440),而不是像我期望的那样 (640,
我正在学习使用 JOGL,在学习本教程时遇到了问题: https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 https://site
我目前正在通过使用 JOGL 库(openGL 的 java 包装器)来探索 opengl,我用它来创建 2d/3d 图形。目前,我对通过“glutBitmapString”方法渲染的文本遇到了一些问
我在我的应用程序中使用 JOGL(OpenGL for Java),我需要一次在屏幕上绘制大量字符串,而我当前的解决方案太慢了。现在,我正在使用 Draw3D 方法使用 TextRenderer 绘制
我在使用 JOGL 时遇到问题。我这里有一本书用 C++ 解释了 OpenGL,但我的任务是用 JOGL 来做。我现在正在处理顶点缓冲区对象,这本书告诉我这一点: glGenBuffers(1, &m
我一直在尝试在独立的 Java 应用程序中使用 JOGL。我已经在 Android 上完成了 OpenGLES 的工作,并且刚刚将我的代码从 Android OpenGL 移植到了这个 Java 应用
我正在使用 JOGL 将 OpenGL SuperBible 演示翻译成 Java。第 12 章之前的所有演示都很顺利,但现在我陷入了阴影贴图。这是我的设置: public class ShadowM
我是 OpenGL 的新手,正在尝试使用 jogl。我可以毫无问题地绘制三角形,但是当我尝试绘制四边形(在许多教程中使用)时,Eclipse 一直告诉我 GL.GL_QUADS 无法解析。 gl.gl
我正在 JOGL 中构建一些东西,并且希望通过使用键盘或鼠标来使相机移动,这并不重要,只要相机可以围绕对象平移并可能放大和缩小即可。如果使用键盘/鼠标很困难,那么我也不介意使用应用程序中的某些按钮,例
我的问题是关于jogl的。我在 Canvas 显示中绘制图像。但我在图像上绘制多边形。我画多边形,但多边形是透明的,而不是颜色的。我可以做吗? gl.glBlendFunc(GL.GL_SRC_AL
我一直在尝试加载一个 bmp 图片以在我的程序中将其用作纹理 我使用了一个 IOStream 类来扩展 DataInputStream 以读取像素在照片中,此代码基于 C++ 的纹理加载器代码: //
在我的项目中,我希望为不同的对象使用一些纹理。 目前我有以下代码: private Texture[] textures = new Texture[1]; private int texture1
我已经使用 JOGL 几天了,现在这已成为一个主要障碍。我无法让形状以正确的 z 顺序绘制,而是按照它们提供给 OpenGL 的顺序绘制。 我花了最后几个小时研究这个问题,一般的解决方案(和我的 re
我正在尝试将 C# 应用程序移植到 Java,目前正在翻译 OpenGL 代码。在 C# 应用程序中使用了 OpenTK,在 Java 应用程序中我选择了 JOGL。当我尝试创建纹理时,程序抛出异常。
我最近才开始使用 JOGL,但我的第一个程序失败了,因为我无法获得 GL4 配置文件。 GLProfile test = GLProfile.get(GLProfile.GL4); 此行失败并显示错误
我正在使用 JOGL 渲染一些模型。我可以实现 KeyListener 接口(interface)并相应地接收击键。但问题是,按键后我无法再次刷新或渲染模型。我可以接收输入,但如何在 JOGL 中每次
我是一名优秀的程序员,十分优秀!