草庐IT

android - 是否可以使用 OpenGL ES 2.0 扭曲底层图像?

我有一个Android4.0应用程序,它使用GL_OES_EGL_image_external方法将视频渲染为OpenGL表面。效果很好。此外,我想在此基础上拉伸(stretch)/扭曲一些补丁。我目前正在对那些我想在这些区域顶部的一些四边形上使用一些额外的着色器进行变形的区域进行着色。我被困在如何获得底层颜色上。视频四边形顶部的四边形上的着色器如何扭曲底层图像?可能吗? 最佳答案 我在iOS上,但我的应用做的事情非常相似。我是如何实现它的是基于一些samplecodefromApple(特别是看RippleModel.m)。它是如

java - 安卓 OpenGL ES : How do you select a 2D object?

我一直在StackOverflow中搜索OpenGLES中的2D选择的介绍。我主要看到有关3D的问题。我正在使用OpenGLES在Android4.0.3上设计一个基于2D图block的关卡编辑器。在关卡编辑器中,屏幕中央放置了一个2D黄色方形对象。我只想检测该对象是否已被用户触摸。在关卡编辑器中,没有任何重叠的图block。相反,它们并排放置,就像MSPaint中位图图像中的两个相邻像素一样。我的目的是为关卡编辑器中的每个方形对象单独检测触摸事件。该对象是用一个简单的顶点数组创建的,并使用GL_TRIANGLES绘制2个平面直角三角形。没有操作,也没有从文件或任何东西加载。我唯一知道

Android Opengl 2.0 Alpha 混合问题 - 半透明纹理

我在游戏中使用AphaBlending时遇到这个问题,当我绘制一个带有alpha纹理的表面时,应该不可见的部分是不可见的,但是应该可见的部分是半透明的。这取决于光量-离光源越近看起来越好,但在阴影中这些物体几乎消失了。我启用Alpha混合:GLES20.glEnable(GLES20.GL_BLEND);然后我设置函数:GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA,GLES20.GL_ONE_MINUS_SRC_ALPHA);或GLES20.glBlendFunc(GLES20.GL_ONE,GLES20.GL_ONE_MINUS_SRC_ALPHA);

android - 可以为着色器统一设置初始值吗? (安卓,OpenGL ES 2.0)

编辑:正如建议的那样,我试图在我的构造函数中为我的着色器统一设置一个“初始”值,我已经包含了一些代码,如果有人能解释我为什么得到,我将不胜感激如果我通过我的构造函数传递值,则会出现空白屏幕-谢谢加载纹理的方法publicvoidsetTexture(GLSurfaceViewview,BitmapimgTexture){this.imgTexture=imgTexture;iProgId=Utils.LoadProgram(strVShader,strFShader);iBaseMap=GLES20.glGetUniformLocation(iProgId,"u_baseMap");i

android.grapics.matrix 到 OpenGL 2.0 ES 纹理转换

目前,该应用程序显示一个ImageView,它可以在屏幕上成功地缩放和平移。在该图像之上,我想提供一个纹理,我想在其下方的图像缩放或平移时更新自身以缩放或平移。据我所知,这应该可以通过在ImageView上使用我当前设置的getImageMatrix(),然后将其应用于原始图像顶部的纹理位图来实现。编辑和解决方案:(在下面所选答案的大力帮助下)目前,纹理中的平移速度与ImageView的速度不同,但当该问题得到解决后,我将通过其他编辑更新此帖子,并为整个应用程序提供解决方案。然后将只保留解决方案和快速问题描述段落。也许我什至会发布使用可缩放表面View的表面View和渲染器源代码。为了

Android OpenGL 以原始(小)分辨率渲染到 frameBuffer,然后将其缩放(viewPort)到屏幕尺寸

我有一个NV21(YUV420)摄像机视频,我正在对其应用fragment着色器以获得一些滤镜效果以及YUV到RGB的转换。除了性能不佳外,一切正常。我的fragment着色器有点重,因为它有很多textur2D()调用。原始帧分辨率为480x640像素,我注意到如果我将视口(viewport)设置为这个原始大小(而不是全屏大小),它运行良好且流畅。所以基本上我需要首先渲染帧并在frameBuffer(FBO)中以原始大小处理它,然后(在着色器工作完成后)使用视口(viewport)(主要是1080x1920)将它缩放到全屏大小,这意味着“繁重”的处理工作将应用于更少的fragment

android - opengl android中的纹理坐标显示图像反转

我编写了openglandroid代码来在正方形上显示位图。但是位图是反向绘制的。当我将纹理数组组合更改为注释代码时,它被正确绘制。但我坚持我的纹理数组必须如下所示。我想错了吗?/**Theinitialvertexdefinition*/privatefloatvertices[]={-1.0f,1.0f,0.0f,//TopLeft-1.0f,-1.0f,0.0f,//BottomLeft1.0f,-1.0f,0.0f,//BottomRight1.0f,1.0f,0.0f//TopRight};/**Ourtexturepointer*/privateint[]textures=

java - Android 上的 OpenGL : Any conflicts when calling OpenGL functions in both Java and C++?

在我的应用程序中,我使用了在Java中调用OpenGL函数的第3方自定义View,并且还在我的nativeC++代码中调用了OpenGL函数。这应该是个问题吗?是否存在同时调用它们的风险?跨java/c++的OpenGL调用的线程顺序是什么? 最佳答案 这应该不是问题,只要您知道自己在做什么。Android中的OpenGLJava绑定(bind)基本上只是调用相同的c++函数。这些调用中没有更多逻辑。因此,您基本上可以将这些调用视为直接的C++代码。如果您只有一个上下文,您更有可能遇到的问题是OpenGL不是线程安全的。因此,如果两

Android:在 OpenGL 之后正确清理

在Android上使用OpenGLES后是否需要采取任何特定的清理操作来清理,还是一切都会自动发生? 最佳答案 虽然操作系统应该清理所有OpenGL资源(如纹理、VBO、帧缓冲区等),一旦您的程序结束(这应该像任何其他操作系统一样在Android上保留)或GL上下文被破坏,它是使用各自的析构函数(如glDeleteTextures、glDeleteBuffers...)删除不再需要的任何OpenGL对象仍然是一个好习惯。 关于Android:在OpenGL之后正确清理,我们在StackO

Android 和 OpenGL 启动时出现黑框

我目前正在为我的一位客户编写一个Android应用程序,该应用程序有一个带有GLSurfaceView.Renderer的GLSurfaceView。我的整个OpenGL东西工作得很好(它基本上是另一个开发人员首先在iOS上编写的东西的一个端口)。除了一件事。当加载View并因此加载OpenGL内容时,我的背景快速闪烁黑色,然后OpenGL开始正确渲染(使用我的背景)。所以我做的是:在onSurfaceCreated中,我从这个开始:@OverridepublicvoidonSurfaceCreated(GL10gl,EGLConfigconfig){GLES20.glClearCol