草庐IT

android - 如何在 Android 上的着色器中声明 OpenGL 版本?

我正在试验OpenGLES3.0并在快速引用表中找到以下语句:“#version300es”mustappearinthefirstlineofashaderprogramwritteninGLSLESversion3.00.Ifomitted,theshaderwillbetreatedastargetingversion1.00.所以我尝试在着色器的开头添加它,但这只会导致错误Linkfailedbecauseofinvalidvertexshader.据.glGetProgramInfoLog报道.如果我删除带有“#version300gl”语句的第一行,着色器将编译并运行。这是

java - 是否可以从您的 C++ 和 Java 代码调用 OpenGL ES?

我有一个应用程序将利用NDK来满足高图形要求和我用C++编写的地形生成库。我的问题是我是否已经使用SDK制作了GUI并在java中进行了随机opengl调用,例如GLES20.glEnable(GL_CULL_FACE);然后继续调用glEnable(GL_DEPTH_TEST);在C++中通过JNI会有任何已知的错误/构建问题吗?如果有人想知道我为什么问这个和/或认为这是一个愚蠢的问题,那是因为在桌面OpenGL中有一个现有的OpenGLcontext(尽管GLFW处理了大部分)。我担心OpenGLES是否也有一个现有的context。如果是这样,从Java和C++调用OpenGLE

Android OpenGLES 渲染到纹理

我为iPhone编写了图形应用程序,并且希望将我最新的应用程序“Layers”移植到Android平台。Layers是一款绘画应用程序,允许用户在屏幕上绘画并使用不同的画笔、颜色等创建多层绘画...并导出为PSD。它具有桌面同步、涂抹工具和许多好东西...http://www.layersforiphone.com/我从星期一开始研究Android平台,但遇到了一个大问题。我使用OpenGL来完成所有绘图,因为它提供了最佳性能。然而,有几个地方我需要渲染成纹理然后使用纹理。例如:使用画笔纹理和一行Sprite在纹理A中创建黑色笔触在glColor4f中放入画笔颜色+alpha,然后将纹

android - 如何在 Android 中与 OpenGL 共享 Renderscript 分配

我有一个Renderscript,它处理输出给分配的图像。我想在我的OpenGL程序中将此分配用作纹理,但我不知道如何从分配中获取纹理ID。另一方面,我知道我可以使用图形Renderscript,但由于它已被弃用,我想一定有其他方法可以实现相同的结果。 最佳答案 创建分配时指定USAGE_IO_OUTPUT。假设您在脚本中生成纹理数据,您还可以添加USAGE_SCRIPT。然后你可以调用Allocation.setSurface(theGLSurface)将分配链接到纹理。每次您想使用需要调用的脚本内容更新纹理。Allocation

android - Opengl开发依赖GPU吗?

我正在用openglES2.0开发一个android应用程序。在这个应用程序中,我曾经在GLsurfaceView中通过触摸事件绘制多条线和圆圈。由于opengl依赖于GPU,目前它在GoogleNexus7(ULPGeForce)中运行良好。在SamsungGalaxyNote2(MALI400MP)中,我尝试绘制多条线,但它清除了前一行并将当前线绘制为新线。在SonyXperiaNeoV(Adreno205)中,我尝试绘制一条新线,它会破坏表面,如下图所示。是否可以让它在所有设备上运行,还是我需要为单个GPU编写代码?源代码主Activity.java//inOnCreatemet

java - 'texture2D' : No matching overloaded function found OpenGL ES2?

我正在做一个项目,为了那个项目,我必须通读一本名为“OpenGLES2ForAndroid:快速入门指南”的书。所以当我进行纹理处理时,我得到了以下错误:'texture2D':Nomatchingoverloadedfunctionfound当我编译着色器时。着色器代码://Fragmentshaderprecisionmediumpfloat;uniformsampler2Du_TextureUnit;varyingvec4v_TextureCoordinates;voidmain(){gl_FragColor=texture2D(u_TextureUnit,v_TextureCo

java - 3D 球体 OpenGL

我想创建一个球体,实际上是一个地球仪。但我似乎找不到任何有关如何处理球体的顶点和索引以及如何设置它们的有用信息。你们中的任何人都可以引导我走上正确的轨道,也许给我一些示例代码或指向教程的链接吗? 最佳答案 最简单的方法是使用glu函数。我主要在C中工作,但在Java中可能是这样的:importnet.java.games.jogl.GL;importnet.java.games.jogl.GLU;importnet.java.games.jogl.GLUquadric;...GLUquadricquad=glu.gluNewQuad

Android OpenGL 3D采摘

我使用的是AndroidOpenGL-ES2.0,在它带来的所有限制之后,我不知道如何将2D屏幕触摸到我拥有的3D点。我得不到正确的结果。我正在尝试将光线射入点云,然后我可以比较我的点与光线的距离,找到最近的点。publicclassOpenGLRendererextendsActivityimplementsGLSurfaceView.Renderer{publicPointCloudptCloud;MatrixGrabbermg=newMatrixGrabber();...publicvoidonDrawFrame(GL10gl){gl.glDisable(GL10.GL_COLO

android - 在 OpenglES2 [Android] 中使用 glTexImage2D(..) 更新纹理

初始化代码创建一个128x128像素的RGB单色纹理:GLES20.glGenTextures(1,textureId,0);GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,textureId[0]);GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D,0,GLES20.GL_RGB,bitmap.getWidth(),bitmap.getHeight(),0,GLES20.GL_RGB,GLES20.GL_UNSIGNED_BYTE,byteBuffer);|GLES20.glBindTexture(GLES20.GL

Android:与 OpenGL 渲染器线程同步

我正在使用OpenGLES在Android应用程序中执行绘图。我想编写一个从UI线程调用的函数,该函数将调用渲染器线程并让它读取图像并将图像返回给调用者。我正在考虑使用Future这样UI线程就会在渲染器线程写入图像数据时休眠(该操作非常快,因此用户不会觉得应用程序变得无响应)。但是我不知道如何将Future提交给渲染器线程。我找到的所有示例都创建了自己的线程,然后将future提交给这些线程。关于GLSurfaceView的文档提到“queueEvent()方法用于UI线程和渲染线程之间的安全通信。如果您愿意,可以使用其他一些Java跨线程通信技术,例如Renderer类本身的同步方