Tag: opengl es 2.0

Android OpenGLES 2从触摸坐标中拾取光线,取消计算略微偏离计算

我试图通过交叉射线测试实现基于触摸坐标的对象拾取。 我无法找到有关将触摸坐标转换为世界中使用的坐标系以构建此光线的信息。 到目前为止,我的理解是应用于场景中每个顶点的矩阵是: projectionMatrix * viewMatrix * modelMatrix 这是我的过程,用于反转该过程,试图在场景中找到光线的端点以及我的绘图循环,以防我只是错误地应用不同的矩阵: public float[] getMouseRayProjection(float touchX, float touchY, float windowWidth, float windowHeight, float[] modelView, float[] projection) { float[] rayDirection = new float[4]; float normalizedX = 2 * touchX/windowWidth – 1; float normalizedY = 1 – 2*touchY/windowHeight; float[] unviewMatrix = new float[16]; float[] viewMatrix = new float[16]; Matrix.multiplyMM(viewMatrix, 0, […]

如何在OpenGL ES 2中创建和使用VBO

我正在寻求帮助理解维生素生态系统。 我做了大量的研究,并找到了关于这个主题的教程,但它们对我来说仍然含糊不清。 我有几个问题: 应该在哪里创建VBO,我应该如何创建VBO? 我目前正在使用下面的代码来初始化我的顶点和索引缓冲区: vertices = new float[] { p[0].x, p[0].y, 0.0f, p[1].x, p[1].y, 0.0f, p[2].x, p[2].y, 0.0f, p[3].x, p[3].y, 0.0f, }; // The order of vertex rendering for a quad indices = new short[] {0, 1, 2, 0, 2, 3}; ByteBuffer bb = ByteBuffer.allocateDirect(vertices.length * 4); bb.order(ByteOrder.nativeOrder()); vertexBuffer = bb.asFloatBuffer(); vertexBuffer.put(vertices); vertexBuffer.position(0); ByteBuffer […]

Opengl ES 2.0:获取纹理大小和其他信息

问题的背景是Android环境中的OpenGL ES 2.0。 我有一个纹理。 没问题可以显示或使用它。 是否有一种方法可以从其绑定ID开始知道它的宽度和高度以及其他信息(如内部格式)? 我需要在不知道纹理大小的情况下将纹理保存到位图。

LibGDX 0.9.9 – 在环境中应用立方体贴图

我正在使用LibGDX 0.9.9。 我正在尝试渲染立方体贴图和雾。 所以我的代码片段如下: public void show() { modelBatch = new ModelBatch(); environment = new Environment(); environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 1.0f, 0.4f, 0.4f, 1f)); environment.set(new ColorAttribute(ColorAttribute.Fog, 0.9f, 1f, 0f, 1f)); environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f)); cubemap = new Cubemap(Gdx.files.internal(“cubemap/pos-x.png”), Gdx.files.internal(“cubemap/neg-x.png”), Gdx.files.internal(“cubemap/pos-y.png”), Gdx.files.internal(“cubemap/neg-y.png”), Gdx.files.internal(“cubemap/pos-z.png”), Gdx.files.internal(“cubemap/neg-z.png”)); environment.set(new CubemapAttribute(CubemapAttribute.EnvironmentMap, cubemap)); cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.position.set(1f, 1f, […]

关于android上的opengles和纹理

众所周知,在OpenGL ES中,android上的类Renderer有3个function:onDrawFrame, onSurfaceChanged, onSurfaceCreated. 我们可以在onSurfaceCreated和onDrawFrame中加载纹理。 我想知道我可以在“渲染器”之前加载纹理。可能我有一个名为“Map”的类,我可以在创建“GLSurfaceView”之前在“ Map”中加载图像纹理。 或者我可以在函数“onSurfaceCreated”和“onDrawFrame”之前加载图像纹理。 如果有人知道,请帮助我。 谢谢!!

glClearColor无法正常工作(android opengl)

我想在运行时更改我的应用程序的背景颜色。 所以点击按钮我先打电话: GLES20.glClearColor(color[0], color[1], color[2], color[3]); 然后我打电话给: GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); 它什么都不做! 它保持当前的背景颜色 – 不会改变它。 但是当我暂停我的应用并再次恢复时,背景颜色会发生变化。 编辑:我发现了一种方法。 每个帧我首先调用glClear但我dident调用glClearColor 。 因此,如果我在调用glClear之前每次调用glClear它都可以工作。 但是这对我来说仍然没有意义,我想避免在每一帧调用glClearColor ,认为如果我想改变颜色就调用它就足够了。