草庐IT

android - 带有着色器的 HUD (opengl-es 2.0)

如何在opengles2.0上使用着色器绘制HUD?我有一个在屏幕上绘制带纹理的四边形的着色器,它使用MVP矩阵。四边形有自己的顶点,这些顶点与View位置等无关(MVP矩阵的原因)Matrix.frustumM(mProjMatrix,0,-ratio,ratio,-1,1,3f,17);Matrix.setLookAtM(mVMatrix,0,0,0,-5,0f,0f,0f,0f,1.0f,0.0f);我想在右上角显示相同的四边形(如按钮或其他东西,HUD)。据我了解,我需要创建一个正交矩阵而不是“frustumM”,但我以后应该做什么?顶点着色器应该如何使用四边形的顶点?

Android——几乎完全在 OpenGL 中制作用户界面有什么问题吗?

构建以GLSurfaceView为中心的UI时应注意哪些注意事项?这是针对游戏的,大部分UI将是介绍屏幕(开始、选项、关于、退出)和关卡选择器屏幕。我已经在使用OpenGL的游戏渲染/动画上投入了大量时间,而且我不是图形艺术家,所以采用OGLUI路线对我来说似乎很有意义。但我是Android新手,需要一些外部输入。感谢阅读。 最佳答案 这没什么不对,尤其是对于游戏而言。唯一的问题是您必须一切自己做。大多数游戏似乎都是这样做的。 关于Android——几乎完全在OpenGL中制作用户界面有

android - OpenGL ES 2.0 中的纹理图集

我正在使用OpenGLES2.0开发一个简单的项目。它进行得相当顺利,但我似乎遇到了一个似乎对我们初学者来说记录不足的地方。也就是说,我正在尝试使用纹理图集。我搜索了一下,但似乎找不到任何完整的代码示例。大多数搜索结果会让人们给出关于它们是什么以及如何使用它们的非常基本的概念,但从来没有一个我可以真正研究的完整示例。目前,我只是想从一个图像集中加载一组四到五张图像,并将它们应用到单个三角形strip上。我可以根据需要划分出图像的特定部分,但我找不到任何关于将该图像的更多部分应用到同一个三角形带的示例。我不一定需要关于此的完整教程(我不介意!),但如果有人可以向我指出一些执行类似操作的示

android - OpenGL ES 2.0——简单粒子系统的最佳途径

我正在尝试为使用OpenGLES2.0的Android应用程序创建一个非常简单的粒子系统。基本上它仅适用于背景中的线性移动云。在开始之前我的第一个想法是使用点Sprite,这就是我一直在尝试做的事情。我很难做到这一点,但撇开这些问题不谈,点Sprite真的是解决这个问题的方法吗?在我为解决错误而进行的搜索中,我已经阅读了很多关于它们的相互矛盾的内容,如果这不是我应该的解决方案,我不想投入大量时间来使它一切正常首先去争取。与仅使用三角形相比,人们发布了各种各样的问题,例如裁剪,甚至性能下降。我希望有经验的用户了解点Sprite适合的位置以及何时应该使用它们,包括在像我这样的情况下,它们在

Android OpenGL - 简单二维转换的困难

出于性能原因,我正在尝试将游戏中的图形迁移到OpenGL。我需要使用精确的屏幕坐标绘制一个对象。假设在240x320屏幕的中央有一个100x100像素的框。我需要围绕Z轴旋转它,同时保持其大小。我需要围绕X轴旋转它,具有透视效果,保持(或接近)它的大小。我需要围绕Y轴旋转它,具有透视效果,保持(或接近)它的大小。Here'sapicture.到目前为止,我成功完成了前两个任务:publicvoidonDrawFrame(GL10gl){gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdent

android - OpenGL ES 2.0 无法在 Android 4.0.3 上呈现

我正在为Android编写完全原生的OpenGLES2.0游戏引擎。之前我使用SamsungGalaxyS(Android2.3.3)开发,现在使用SamsungGalaxySII(更新到Android4.0.3)。我没有在GalaxySII上试用引擎,因为它仍然有Android2.3.3(硬件特定问题?)。现在引擎可以在Android2.3.3(在GalaxyS上测试)上正常运行和渲染,但在Android4.0.3(在GalaxySII上测试)上无法渲染。问题类似这样:OpenGLRenderernotworkingonIceCreamSandwich除渲染外,其他一切在4.0.3上

android - 多个 OpenGL ES 2 Android 渲染器

是否可以在一个屏幕上同时显示多个渲染?就像将android屏幕分成4个象限并在每个象限上显示一个立方体?我认为OpenGL有可能,但那是GLUT并且是基于Windows的。我正在研究如何为android做这件事,但我还没有遇到任何描述。这是我创建渲染的主要Activity。publicclassMainActivityextendsActivity{privateMyGLSurfaceViewmGLView;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);/

android - OpenGL ES2.0 glReadPixels() 非常慢

我正在使用glReadPixels将像素从FBO读取到内存。代码如下:UINT8*data;glBindFramebuffer(GL_FRAMEBUFFER,FBOID);glReadPixels(0,0,w,h,GL_RGB,GL_UNSIGNED_BYTE,data);我发现这个操作非常非常慢...在openGLES2.0(Android)中有没有其他选择? 最佳答案 是的,它很慢。OpenGLES2.0在Android上没有提供更快的方法。您可以在OpenGLES3.0上使用PBO,但这可能不适合您,因为目前支持它的设备很少,

android - 如何将 OpenGL 上下文中的纹理复制到另一个上下文

我正在尝试使用OpenGLES2上下文在Android上使用MediaCodec录制视频。为此,我想使用可记录表面:privatestaticfinalintEGL_RECORDABLE_ANDROID=0x3142;创建一个新的上下文。实际上,我在First上下文中渲染纹理中的场景。我想在新上下文中呈现它以将数据发送到MediaCodec。我正在尝试做与this相同的事情Recordingpatch的突破教程我在我的游戏中实现了InputSurface和GameRecorder,但我只记录了一个空场景。我的主要问题是,上下文不共享相同的OpenGL对象,而且我不知道最好的解决方案。我

Android Surfaceflinger 和 openGL ES

我有几个关于SurfaceFlinger的问题:1)我知道应用程序会写入Surface本身,然后将缓冲区移动到SurfaceFlinger(假设我使用的是HardwareCanvas或EGL)。缓冲区里面有什么?原始像素?编译openGL代码?缓冲区能否在一次交易中保存像素而在另一次交易中保存另一种类型的数据?2)我在某处读到SurfaceFlinger使用OpenGLES1.0API写入HWC/DisplayController命令。是真的吗?如果是,那么3.0版命令是如何翻译成1.0版命令的,在哪里?谢谢 最佳答案 (1)假设您