草庐IT

android - OpenGL ES 2.0 指定位置属性 vec3 或 vec4

在OpenGLES2.0介绍中,可在此处找到:http://www.webreference.com/programming/opengl_es/2.html定义了一个顶点着色器:GLbytevShaderStr[]="attributevec4vPosition;\n""voidmain()\n""{\n""gl_Position=vPosition;\n""};\n";vPosition属性是一个四分量向量。在文本的后面,应用程序将编译顶点着色器和fragment着色器。使用glBindAttribLocation可以建立将应用程序顶点数据传递给着色器的句柄://BindvPosi

android - 模拟器未运行 OpenGL 应用程序,消息为 "Unfortunately, OpenGL ES 2.0 Basic has stopped"

我通过thedevelopersite.得到了一个OpenGl的例子我的问题是它不运行该应用程序。这是我的日志:10-1714:43:12.574:E/Trace(684):erroropeningtracefile:Nosuchfileordirectory(2)10-1714:43:13.523:D/libEGL(684):EmulatorwithoutGPUsupportdetected.Fallbacktosoftwarerenderer.10-1714:43:13.523:D/libEGL(684):loaded/system/lib/egl/libGLES_android.

android - android.opengl 和 javax.microedition.khronos.opengles 包之间有什么区别?

只是在网络上找不到任何关于android.opengl类用途的信息:它们似乎是javax.microedition.khronos.opengles的副本-仅使用静态方法与成员方法。那么使用它们而不是J2ME类有什么特殊意义:它们是否应该更快、具有附加功能、更易于使用?我想使用它们而不是一直传递那个GL引用。 最佳答案 好吧,以防万一有人真的对android.opengl和OpenGLES标准javax.microedition.khronos.opengles包之间的区别感兴趣,可以在Android的经典ApiDemos项目中找到

android - 动态添加 Opengl 形状

我正在按照本教程将Opengl添加到我的Android应用程序中。https://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html.在所有示例中,形状都是在MyGLRenderer构造函数中创建的,但我想知道如何在创建渲染器后动态添加Opengl形状。如何才能做到这一点? 最佳答案 您创建一个名为Shape的接口(interface)或类。这将包含渲染3D形状所需的数据(顶点、索引、颜色数据等)。或者,用于渲染的VAO/VBO/纹理ID/其他ID。使用类的

Android Opengl ES : GLUtils. glTexImage2D 导致 GL_INVALID_ENUM

我正在尝试使用GLSurfaceView在Android2.2上渲染一个简单的纹理四边形。我正在使用BitmapFactory.decodeResource()加载BMP图像(128x128)-这似乎有效。但是每当我尝试使用GLUtils.glTexImage2D将此位图放入OpenGL纹理时,我都会收到OpenGL错误:glGetError()返回1280,GL_INVALID_ENUM.我究竟做错了什么?这是我的渲染器的代码:publicclassMyRendererimplementsGLSurfaceView.Renderer{Contextcontext;inttexId;p

android - 针对不同 DPI 的 OpenGL 表面 View 缩放

我有一台分辨率为800x480的设备。当我创建GLSurfaceView时,我收到一个带有533x320的onSurfaceChanged调用(显然应用了1.5HDPI修改器)并且表面被放大。因此,当我绘制1像素的粗线时,看起来真的很糟糕,而且我无法进行像素完美的渲染。我想要的是原始分辨率表面(800x480)。View以这种方式创建(就像在NDKOpenGL示例中),在Activity的onCreate中:this.requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.Layo

android - 在 Android 中获取最大 OpenGL ES 2.0 纹理大小限制

我正在尝试获取Android中OpenGL2.0的最大纹理大小限制。但是我发现下一条指令只有在我当前处于OpenGL上下文中时才有效,换句话说,我必须有一个GLSurface和一个GLRenderer等,这是我不想要的。int[]maxTextureSize=newint[1];GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE,maxTextureSize,0);所以我想到了下一个算法,它可以给我最大的纹理尺寸,而无需创建任何表面或渲染器。它工作正常,所以我的问题是这是否适用于所有Android设备,是否有人可以发现任何错误,以防万一。pu

android - 如何检测 Android 应用程序中 OpenGL ES 中对象的点击?

在我的Android应用程序中,我有一堆网格在3D空间中四处移动。当触摸任何一个移动的网格(对象)时,我希望网格发生一些事情。我如何检测哪个对象被点击/点击? 最佳答案 在您的View中,您需要覆盖onTouchEvent()并确定触摸事件是否发生在您的某个对象上。AndroidDevBlog有一些处理触摸事件的例子。 关于android-如何检测Android应用程序中OpenGLES中对象的点击?,我们在StackOverflow上找到一个类似的问题: h

android - Android Canvas.drawBitmap 性能不佳 - 切换到 OpenGL?

我正在将2DAction游戏从WindowsPhone7(在XNA4.0中开发)移植到Android。我正在使用很多Canvas.drawBitmap()调用-每帧更新大约200-300-每次调用使用不同的Paints来处理绘制时不同的透明度和着色-时间。这是管理粒子系统和各种其他叠加层和游戏内效果以及平铺背景和游戏内Sprite。我没有做任何按需调整大小或旋转,它是简单的src->dest相同大小的矩形。在WP7上,它以30+fps的速度运行,但我正在努力在我的测试机器人硬件(SamsungGalaxyS)上获得12fps。这使游戏无法播放。剖析代码后,我确认我所有的时间都浪费在了C

java - 使用 OpenGL 替换 Canvas - Android

我正在尝试用更快的opengl-es表面替换我已经拥有的基于Canvas的渲染系统,但是,我似乎无法让openGL渲染器以充当2d场的方式符合,而不是透视图。我当前的渲染器代码如下所示:@OverridepublicvoidonSurfaceChanged(GL10gl,intwidth,intheight){gl.glViewport(0,0,width,height);gl.glMatrixMode(GL10.GL_PROJECTION);gl.glLoadIdentity();gl.glOrthof(0.0f,width,0.0f,height,0.0f,1.0f);gl.glS