Articles of jogl

纹理不会随着gluSphere旋转

我在我的显示器中生成了一个gluSphere,它在旋转,但是也有与球体一起旋转的纹理问题。 所以简而言之,无论球体如何旋转,球体周围的纹理都保持在相同的位置。 如何能够随着球体更新纹理,使其旋转? private static Texture testTex; … // This method is called in init() public void sphereTexture(GL2 gl) { InputStream iStream = null; try { iStream = getClass().getResourceAsStream("cratepng.png"); TextureData data = TextureIO.newTextureData(iStream, false, null); testTex = TextureIO.newTexture(data); testTex.getImageTexCoords(); testTex.setTexParameteri(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); testTex.setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_NEAREST); iStream.close(); } catch(IOException e) { e.printStackTrace(); System.exit(1); } // Set material properties […]

与VBO照明

介绍 我使用的是一个名为processing.org的Java JOGL包装器,而且我已经编写了一些环境,即使它有一些库函数(我不知道任何关于它的情况)(== LIGHTS),我也很自豪。 现在,对于某些几何体,我决定使用VBO。 我不得不艰难地通过并重新编码所有的灯。 但是我不能达到同样的结果。 有了这个环境,如果我使用标准灯我得到这个结果: 这个环境包装了opengl函数,我无法理解纯OPENGL调用。 我知道processing.org环境中的标准光源代码是: public void lights() { enableLighting(); // need to make sure colorMode is RGB 255 here int colorModeSaved = colorMode; colorMode = RGB; lightFalloff(1, 0, 0); lightSpecular(0, 0, 0); ambientLight(colorModeX * 0.5f, colorModeY * 0.5f, colorModeZ * 0.5f); directionalLight(colorModeX * 0.5f, colorModeY * 0.5f, colorModeZ * […]

我可以使用哪些技术在OpenGL中更高效地渲染大量对象?

你可以把我的应用程序想象成一个非常大的球棍图(或图)。 有时候,这个graphics可能变得非常大,元素的数量甚至超过了屏幕上的像素。 目前,我只是将所有纹理(如GL_POINTS )和行传递给使用VBO的graphics卡。 当元素的数量超过了像素的数量,这是做这个最有效的方法吗? 还是应该在将所有内容交给GPU之前在CPU上进行一些计算? 如果重要,我使用GL_DEPTH_TEST和GL_ALPHA_TEST 。 我做了一些alpha混合,但可能不足以造成巨大的性能差异。 我的场景有时可能是静态的,但是用户可以控制一个典型的弧形球照相机,并且可以平移,旋转或缩放。 在这些操作过程中,性能下降是显而易见的。

用混合和alphatesting渲染两个纹理

我正在寻找的是以下内容:我在方形图像上有一个圆圈,角落处的alpha值为0 还有一个正方形的影子,其他地方的alpha都是0 我希望最终的结果是这两个渲染的混合,以及不在圆外渲染的阴影 我怎么能做到这一点?

围绕另一个球体水平旋转球体

我现在有一个地球和一个月亮。 我想要实现的是让月球沿着圆形path在赤道上水平旋转。 moonAngle = (moonAngle + 0.5f) % 360f; xPath = (float) Math.sin(Math.toRadians(moonAngle)) * distance; yPath = (float) Math.cos(Math.toRadians(moonAngle)) * distance; gl.glTranslatef(xPath, yPath, -30f); 上面的工作很好,除了月亮围绕主子午线围绕地球旋转像一个挂钟。 如何调整旋转角度? 我已经尝试修改glTranslatef ,但没有成功。

JOGL能帮助我学习OpenGL吗?

我决定学习OpenGL。 我通过几个教程。 我发现它执行一个简单的任务就像在OpenGL中做精灵animation一样复杂。 现在我读了一下JOGL,它似乎更容易访问。 所以我其实有两个问题。 JOGL能帮助我更好地理解OpenGL吗? 对我来说同样重要的是,我能否将我的JOGL应用程序上传到Greenlight,MS-marketplace等?

Java OpenGl旋转立方体问题!

好的,所以我成功学会了如何将纹理绑定到四边形,并显示这个很酷的箱子。 但是,当我旋转立方体出事了。 在旋转过程中,立方体的背面覆盖正面并出现在正面的前面。 左右脸也是如此。 他们相互叠加,给人一种奇怪的感觉。 我不知道为什么会发生这种情况。 这里是我只画四个面(前,后,右,左)的代码。 gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); // clear the screen and depth buffers gl.glLoadIdentity(); // reset the current modelview matrix // draw quad gl.glTranslatef(0.0f, 0.0f, -6.0f); // translate to the left and into the screen gl.glRotatef(rotateAngle, 0.0f, 1.0f, 0.0f); // rotate triangle around the y-axis gl.glBindTexture(GL2.GL_TEXTURE_2D, textures[2]); // bind the texture […]

我如何使用新的(ish)JOGL GPU曲线渲染类来渲染文本?

我对OpenGL / JOGL相当陌生,通过各种教程和书籍工作并取得稳步进展。 然而,文本是我卡住的一个领域。 我想出了一种使用BufferedImage和Graphics2D绘制string的方法,然后调整像素并复制到OpenGL纹理,但是质量较差,取决于分辨率,效率不高。 我发现这个: http : //forum.jogamp.org/GPU-based-Resolution-Independent-Curve-Rendering-td2764277.html 。 不幸的是,虽然在GitHub仓库中有一些演示,但是我不能完全理解他们。 我试过的代码如下: 在init()方法中: InputStream fontFile = getClass().getResourceAsStream("media/futura.ttf"); try { font = FontFactory.get(fontFile, true); } catch (IOException e) { System.err.println("Couldn't open font!"); e.printStackTrace(); } RenderState renderState = RenderState.createRenderState(SVertex.factory()); renderState.setColorStatic(1, 1, 1, 1); renderState.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); renderer = RegionRenderer.create(renderState, RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable); renderer.init(gl, Region.VBAA_RENDERING_BIT); util = new TextRegionUtil(Region.VBAA_RENDERING_BIT); 在display()方法中: PMVMatrix […]

不能导入Sun openGL

我一直在JOGL的工作,我遇到了一个问题。 问题是当我尝试导入import com.sun.opengl.*; 在Eclipse上,Eclipse不能识别它。 有谁知道这个图书馆在哪里? 安装过程中我错过了一个步骤吗? 我正在使用最新版本。 这里是包含的库: gluegen-rt-natives-windows-i586.jar – JOGL / lib gluegen-rt – JOGL / lib gluegen.jar – JOGL / lib jogl-all-natives-windows-i586.jar – JOGL / lib jogl-all.jar – JOGL / lib 这是在我的JOGL项目文件夹中: gluegen-rt.dll

重建OpenGL中的着色器顶点

我不确定'重构'是否是这个正确的术语,但是本质上我正在尝试的是在CPU上计算顶点位置(已经通过着色器计算),用于光线跟踪。 我需要知道模型的位置,所以我可以检测到我的光线是否通过它们。 如果能够在着色器计算出来之后从内存中检索到这些值,那就太好了,但这看起来不太可能 – 或者是不可取的。 到目前为止,我看起来应该可以工作,但是当我追踪我的射线(直接穿过模型)时,没有任何顶点落入模型中。 创建射线 (通过在远/近之间绘制线进行testing,并且工作正常): public float[] getPickingVector(float[] modelview, float[] projection, int[] viewport, float winX, float winY) throws Exception { float[] mat4Tmp1 = new float[16]; float[] mat4Tmp2 = new float[16]; float[] vec4Tmp2 = new float[4]; FloatUtil.mapWinToObjCoords(winX, winY, 0, modelview, 0, projection, 0, viewport, 0, nearVector, 0, mat4Tmp1, mat4Tmp2); FloatUtil.mapWinToObjCoords(winX, winY, 1, modelview, […]