草庐IT

android - 在 OPENGL 屏幕上添加按钮

我在Android中借助OPENGL创建了一个旋转的立方体,现在我想添加一个监听器来处理立方体的旋转,即当我单击按钮时,立方体必须开始旋转,反之亦然。我如何添加一个OPENGL屏幕上的按钮? 最佳答案 这里有两个选项:创建一个布局,其中包括您的GLSurfaceView和您想要的任何按钮/设置。为按钮使用标准的OnClickListener并让监听器调用渲染器中的方法来进行旋转。这几乎是实现此功能的最简单方法,但按钮的样式会根据操作系统版本和供应商而改变。如果您想更好地控制按钮,可以尝试其他选项。使用OpenGL绘制按钮。渲染立方体

android - Opengl Es 线宽

我在android上用opengles画了一条线。线条画得很好。唯一的问题是,无论相机离它多近或多远,这条线都保持相同的粗细。有解决办法吗? 最佳答案 OpenGL以固定宽度绘制线条(以像素为单位),与距相机的距离无关。如果您需要粗细随相机距离而变化的“线”,则必须将它们绘制为多边形。您可以使用glLineWidth()更改线宽,但它仍然是固定宽度(以像素为单位)。此外,在OpenGLES中,实现只需要支持最大1.0的线宽。至少有两种主要方法可以将线绘制为多边形。一种是为每条线绘制一个四边形,并确保四边形朝向相机。另一种方法是绘制一

android - OpenGL - 为什么 normalize() 不是幂等的?

我正在使用OpenGLES2.0用Ja​​va开发Android游戏。目前我正在编写自己的顶点和fragment着色器。我在fragment着色器中遇到了一个奇怪的问题:normalize(u_LightPos-v_Position)与normalize(normalize(u_LightPos-v_Position))是不同,其中u_LightPos是统一的,v_Position是变化的。为什么normalize()不是幂等的?为什么我必须调用它两次才能得到一个真正正常的(长度为1)向量?这非常令人困惑。编辑:这是顶点着色器:uniformmat4u_MVPMatrix;unifor

android - Android 上的 JOGL 与 OpenGL ES API。优点缺点

我们正在尝试将我们的项目从PC版本迁移到Android。PC版使用JOGL。谁能解释在Android应用程序中使用JOGL而不是OpenGLESAPI的主要优点?例如,JOGL的PCpro是:理论上您可以在任何平台上使用它。它或多或少与AWT、Swing和SWT集成在一起。此外,它还是某种包装器,因此理论上有一些抽象可以更轻松地使用OpenGL。但我看不到在Android中使用它的优点,从我的角度来看,这是缺点:它是另一个依赖,APK大小会更大。一些影响JOGL和OpenGLES的问题需要更多是时候查明并修复了。这不是不需要一些时间的Elixir重构,因为在Android中我们应该使用

Android OpenGL es 2.0 无法重新加载对象上的纹理。

多亏了这里提出的几个教程、问题和答案,我已经设法加载纹理并自由旋转球体,但我偶然发现需要在运行时重新加载纹理(获取位图图像,对其进行处理,然后将其作为对象的新纹理)。我没有为我的特定问题找到任何有效的解决方案(我已经阅读了所有相关的问题和答案)。我对OpenGL很陌生。这是我的第二个项目,我的第一个3D项目,也是我在这里提出的第一个问题。所以这里是:基本上纹理加载是在以下函数中完成的:publicvoidloadGLTexture(finalContextcontext,finalinttexture){GLES20.glGenTextures(1,mTextures,0);if(mT

android - 无法在三星设备上分配变量 [OpenGL ES]

在三星设备上编译模糊着色器失败并出现错误:无法分配变量着色器代码如下:#ifdefGL_ESprecisionmediumpfloat;#endifvaryingvec2v_texCoord;varyingvec2v_blurTexCoords[14];varyingvec2pixel_size;uniformvec2v_resolution;uniformsampler2Du_texture;uniformmat4u_projTrans;voidmain(){...}在其他设备上运行良好,三星设备可能有什么问题? 最佳答案 看起来

Android OpenGL ES 图像失真

我正在开发一个Android应用程序,它使用OpenGL在草地上渲染3D球。用户可以与球互动(通过触摸旋转球)。问题如下:在我的SamsungGalaxyS2上一切正常,但是当我在其他设备(HTCincredibleS、HTCsensation等)上尝试时,我在屏幕上看到一个带有多个裁剪视口(viewport)的扭曲图像(参见attachedimage)。我已经尝试了所有我能想到的方法:禁用纹理、禁用灯光等……似乎没有任何效果。我知道如果没有实际代码很难提供帮助,但我真的不知道代码的哪一部分导致了这个问题。所以我想问是否有人知道可能导致此问题的原因。我的猜测是与GLSurfaceVie

android - XML FrameLayout 降低了我的 OpenGL SurfaceView 帧速率 (fps)

我已经扩展了GLSurfaceView并实现了我自己的GLSurfaceView.Renderer来创建我的第一个相对简单的Android2DOpenGLES游戏。我一直在将表面View设置为内容View的ActivityonCreate方法上使用以下代码测试我的游戏,从中我获得了恒定的60fps。60fpsActivity:mGLView=newOpenGLTest1SurfaceView(this);setContentView(mGLView);但是现在我已经移动到XML布局,所以我可以在屏幕的右下角放置一个admob覆盖层,admobxml:admobActivity:setC

Android OpenGL ES 纹理大小 2 的幂

我已经知道许多硬件需要具有两倍大小的纹理。但是平方图像大小是强制性的吗?我的意思是32x3264x64512x512。我可以在每个硬件中使用512x256大小的纹理吗? 最佳答案 是的,纹理可以是非方形的,这没问题。只要您保持宽度和高度的二次方。 关于AndroidOpenGLES纹理大小2的幂,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11510194/

android - 安装并运行 - Android 上的 OpenGL ES 3.0

我刚刚看到有关OGLES3发布的消息。有些人知道在Android智能手机上安装它并使用它来开发3D应用程序是否已经可行?或者这只有到2013年才有可能?这是一篇关于它的文章:http://www.khronos.org/news/press/khronos-releases-opengl-es-3.0-specification欢迎所有评论。 最佳答案 假设您想要OpenGL的硬件加速上下文,如果目标硬件不支持特定版本的OpenGL,您不能简单地将它更新到下一个版本,因为驱动程序和硬件。