Articles of opengl es 2.0

Android OpenGL ES 2.0屏幕坐标为世界坐标

我正在构建一个使用OpenGL ES 2.0的Android应用程序,而且我遇到了问题。 我正在尝试将屏幕坐标(用户触摸的位置)转换为世界坐标。 我已经尝试过阅读和玩弄GLU.gluUnProject,但我做错了或者只是不理解它。 这是我的尝试…… public void getWorldFromScreen(float x, float y) { int viewport[] = { 0, 0, width , height}; float startY = ((float) (height) – y); float[] near = { 0.0f, 0.0f, 0.0f, 0.0f }; float[] far = { 0.0f, 0.0f, 0.0f, 0.0f }; float[] mv = new float[16]; Matrix.multiplyMM(mv, 0, mViewMatrix, […]

如何学习和使用OpenGL ES 2.0? 我只是不明白 – 严肃的Qn。

这是一个严肃的问题,我在理解它与完全没有之间“陷入困境”。 我对阅读不同资源的时间非常困惑,并希望有人指出我正确的方向。 我正在使用Android平台,直到现在我已经使用了Canvas ,一些OpenGL ES 1.0 ,但主要是通过引擎或已经构建的代码来尝试和理解它。 我的目标是实际了解OpenGL ES 2.0 。 我不想直接去复杂的东西,从简单的东西开始,但我只是不知道怎么做。 我可以得到一个正方形,我可以设置相机和矩阵; 告诉你实话我真的不了解整个矩阵系统及其工作原理,如果我是对的,它是一个固定function管道 ,你不需要在OpenGL ES 1.0进行更改,但现在它是可编程的 –你必须自己设置的管道 。 我不知道如何使用坐标系,我知道原点是设备的中心,每次转向边缘都是1,所以从中心到左边它将是负1。 然而,有一些方法可以将它变成一个不同的坐标系,也许只是使用比例或乘法矩阵来将协调设置为我从Canvas习惯的东西。 基本上我需要帮助的是如何从这里进步? 我觉得好像到了某个地方,但我仍然无处可去。 我真的需要一些关于如何正确使用OpenGL ES 2.0 ,现在我正在计划的是一个简单的2D游戏,也许是侧滚动,所以我将不得不弄乱相机矩阵。 感谢您的时间,我将非常感谢您的帮助。 *我对变换矩阵不太感兴趣,因为我不认为2D游戏真的会使用它,也许只有当我镜像角色的精灵所以它看起来好像是在朝着不同的方向行走时,我很确定通过改变协调和宽度可以使这变得简单。

使用OpenGL ES 2.0绘制2D图像

我一直在努力使用openGL ES 2.0 for Android从jpg / png文件中绘制2D图像。 我看到的每个地方的教程都是用于纹理化3D图像,因此粗略地弄清楚如何绘制常规的2D Sprite。 我得到了一个正方形来绘制和旋转但是一旦它变成了纹理,我必须搞砸了某个地方,因为我一直收到一个错误,说DrawElements没有绑定任何数据,但如果我注释掉任何与纹理相关的代码,它工作正常。 任何帮助将不胜感激。 这是我的Sprite类和Renderer类的代码: public class Sprite { //Reference to Activity Context private final Context mActivityContext; //Added for Textures private final FloatBuffer mCubeTextureCoordinates; private int mTextureUniformHandle; private int mTextureCoordinateHandle; private final int mTextureCoordinateDataSize = 2; private int mTextureDataHandle; private final String vertexShaderCode = //Test “attribute vec2 a_TexCoordinate;” […]

Android OpenGL ES 2,绘制正方形

编辑:问题解决了! 所以我一直在浏览Android的官方OpenGL ES 2教程,并且我已经完成了涉及绘制形状的部分,但我似乎无法使用正方形。 它绘制了一个直角三角形。 我已经包含了我用来定义和绘制形状的代码,几乎完全从教程中复制。 Renderer类只是创建这个形状的实例并调用draw方法。 由于某种原因,本教程没有给出vertexStride和vertexCount的值/声明,所以我在那里的那些是有根据的猜测。 我已经为vertexCount(1到12)尝试了几个值,但没有一个工作。 提前致谢。 public class Square { private FloatBuffer vertexBuffer; private ShortBuffer drawListBuffer; // number of coordinates per vertex in this array static final int COORDS_PER_VERTEX = 3; static float squareCoords[] = { -0.5f, 0.5f, 0.0f, // top left -0.5f, -0.5f, 0.0f, // bottom left 0.5f, -0.5f, 0.0f, […]

我可以在OpenGL ES 2.0中使用哪些版本的GLSL?

尽管有几个小时的谷歌搜索,我似乎无法find一个明确的答案。 有人可以告诉我发生了什么事吗? 我收到的错误是“不支持版本140”。 这是我的设备(Kindle Fire)还是GL ES 2.0? 我需要添加库还是其他什么?

Android OpenGL演示“未选择配置”

我对谷歌的Android OpenGL演示有一个真正的问题。 我在Eclipse中设置它但无法执行它。 它构建没有问题,但在它打开之前停在”java.lang.IllegalArgumentException: No config chosen” 。 我一直在谷歌搜索和堆栈线程上下,没有解决方案。 我确实find了我认为的领先优势: OpenGL ES 2.0支持Android? 它使用命令gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0); 但是,唉,我是Android上的新手OpenGL,不知道把它放在哪里…… 任何帮助将不胜感激。 我正在使用最新的android sdk运行Eclipse Juno。 我正在使用启用GPU硬件的4.2 Jelly Bean模拟器上测试它。

有没有办法检查Android设备是否支持openGL ES 2.0?

我需要动态检查所用设备是否支持openGL ES 2.0。 我怎样才能做到这一点?

android opengl-es-2.0 – rotateM解释

我从android opengl es 2.0开始,我试图理解这些概念。 我写了下面的函数来旋转一个矩形。 通过使用rotateM方法中的值,我成功地进行了一些旋转。 但是,我没有成功做出矩形的一些具体旋转,例如向右旋转2D 45度。 基本上我正在盯着说明以下的android参考; rotateM(float [] m,int mOffset,float a,float x,float y,float z)围绕坐标轴(x,y,z)以angular度a(度)旋转matrixm。 现在我明白了,我们提供了一个modelMatrix,这个matrix中的一个偏移量和angular度旋转,但是为什么我们必须提供xyz轴分量,这些值真的做了什么? 希望有人可以给我一个关于rotateM方法的清晰解释,谢谢! private void positionRectangleInScene() { setIdentityM(modelMatrix, 0); rotateM( modelMatrix, // m : source matrix 0, // mOffset : index into m where the matrix starts 0f, // a : angle ato rotate in degrees 1f, // x […]

检测OpenGl ES 2.0是否可用

我正在为API级别> = 7的Android创build应用程序。一个屏幕通过ndk使用带有OpenGL ES 2.0的GLSurfaceView。 如何检测opengl 2.0是否可用? 我不能在我的AndroidManifest.xml中使用android:glEsVersion="0x00020000" ,因为我必须支持API级别大于android:glEsVersion="0x00020000" 7的所有手机。如果不支持2.0,我将显示一个静态屏幕。 我正在使用ndk附带的hello-gl2示例应用程序中的类似代码。 在GL2JNIView中,当它设置Opengl上下文时,如果它找不到合适的openglconfiguration(在我的情况下需要opengl es 2.0的configuration),它会抛出一个IllegalArgumentException("No configs match configSpec")并且应用程序崩溃。 我无法find拦截该exception的方法,并在该屏幕上执行其他操作。 有任何想法吗?

显示黑色纹理的Android OpenGL2.0

我正在尝试在OpenGL2.0中将纹理绘制到四边形上。 到目前为止,我已经得到了四边形和一切,但纹理不存在 – 四边形都是黑色的。 我的主要怀疑是我没有正确地映射纹理 – 我的纹理不是2的幂,也不是正方形 – 它们的宽度在mWidth字段中,mRowHeight中的高度。 四边形绘制在一个垂直列表中,用一个翻译matrix完成。 我会非常感激,如果任何人都可以过去这个事业,我绝望! 这里是相关的代码: 初始化缓冲区: void initBuffers() { float r = (float) mRowHeight / (mHeight / 2f); ByteBuffer bb; float[] bounds = { // XYZ /* 0 – TL */-1f, 1f, 0f, /* 1 – BL */-1f, 1 – r, 0f, /* 2 – BR */ 1f, […]