草庐IT

textures

全部标签

【unity shader】水体渲染基础-基于texture distortion的流体流动材质

1.基于uv的texturedistortion当液体静止时,它在视觉上与固体没有太大区别。但大多数时候,我们的性能不一定支持去实现特别复杂的水物理模拟,需要的只是在常规的静态材料的表面上让其运动起来。我们可以对网格的UV坐标实现动态变化,从而让表面的纹理效果实现变形的动态变化。1.1.uv实时变化我们直接生成一个默认unlitshader,然后赋予其对应的纹理图片,并且写入随时间变化的uv更新函数。//infragshaderi.uv+=_Time.y;为了实现随机方向的uv变化,我们这里引入一张指示流动方向的贴图。float2flowDir=tex2D(_FlowMap,i.uv);i.u

android & libgdx - 禁用模糊渲染

我正在尝试将libgdx作为opengl包装器,但它的图形渲染存在一些问题:出于某种原因,android设备上的所有图像(纹理)使用libgdx看起来都有些模糊。这也包括文本(字体)。对于文本,我认为这是因为我使用了位图字体,但我找不到替代品——我发现有一个名为“gdx-stb-truetype”的库,但我找不到了解如何下载和使用它。对于普通图像,即使我在没有任何缩放的情况下显示整个图像,我希望它看起来像我在计算机屏幕上看到的一样清晰,特别是如果我的设备上有这么好的屏幕(它是galaxynexus).我试图通过使用下一个代码来关闭抗锯齿:finalAndroidApplicationC

iphone - 在正方形 : Why is the image rotated? 上映射纹理

我在OpenGLES中成功地将图像映射到一个正方形上...但是它旋转了90度。我是OpenGLES的新手,想知道是否有人可以指出它旋转的确切原因。谢谢!packagese.jayway.opengl.tutorial;importjava.io.IOException;importjava.io.InputStream;importjava.nio.ByteBuffer;importjava.nio.ByteOrder;importjava.nio.FloatBuffer;importjava.nio.ShortBuffer;importjavax.microedition.khron

android - 使用 libgdx 绘制大背景图像 - 最佳实践?

我正在尝试编写一个libgdx动态壁纸(OpenGLES2.0),它将显示一个独特的背景图像(不可拆分为Sprite)。我想针对平板电脑,所以我需要以某种方式能够显示至少1280x800背景图片,在该图片之上还会发生更多操作,所以我需要它能够尽可能快地呈现尽可能。现在我只有关于libgdx和opengles的基本知识,所以我不知道什么是解决这个问题的最佳方法。通过谷歌搜索,我找到了一些选项:将纹理分割成更小的纹理。大多数设备上的GL_MAX_TEXTURE_SIZE似乎至少是1024x1024,但我不想达到最大值,所以也许我可以使用512x512,但这是否意味着要绘制一个很多图bloc

android - 如何有效地在OpenGL ES中加载纹理

我具有使用OpenGL的非常基础的知识,尤其是在Android上。我正在开发一个使用OpenGL的应用程序,以便快速地在全屏图像之间切换(因为使用普通的Android框架太慢了)。我发现,为了加载纹理,我需要执行以下操作:ByteBufferbyteBuffer=ByteBuffer.allocateDirect(vertices.length*4);byteBuffer.order(ByteOrder.nativeOrder());vertexBuffer=byteBuffer.asFloatBuffer();vertexBuffer.put(vertices);vertexBuff

android - SurfaceTexture 大小,如何定义?

我正在使用SurfaceTexture绘制相机预览,需要知道纹理的大小+过程中发生的情况。假设设备支持的相机预览尺寸为:1280720、1024576、960720、800600、800480、768576、736552等。很明显,这些尺寸与标准纹理尺寸2048x2048、2048x1024、1024x1024不匹配......我可以想到以下情况,但我不确定:1,表面纹理尺寸为所选预览尺寸,例如1280x720,但这不是pow2格式,可能意味着兼容性问题2,表面纹理包含在pow2格式的下一个尺寸中,未转换,例如1280x720将包含在2048x1024纹理中,没有拉伸(stretch)

android - 如何在 OpenGL ES 2.0 中管理多个纹理?

我有一个具有6种不同纹理的OpenGLES2.0应用程序。我需要的是同时绘制和移动它们。我能够做到,但是Action很慢,因为我一直在将位图加载到纹理中。对于每个纹理,我在Render方法上执行以下操作:setupImage(texture1);GLES20.glVertexAttribPointer(mPositionHandle,3,GLES20.GL_FLOAT,false,0,vertexBufferT1);GLES20.glVertexAttribPointer(mTexCoordLoc,2,GLES20.GL_FLOAT,false,0,uvBufferT1);GLES20

android - 纹理仅在某些设备上显示

我目前正在编写一个适用于OpenGLES1.1的Android应用程序。它在我开发它的HTCDesire(Android2.3.7)上运行良好。现在我想在Nexus7上测试它,但它只显示黑屏。我发现所有纹理都简单地呈现为黑色。在没有渲染对象和纹理的部分,我得到(几乎)黑色的背景色。所以我的问题是为什么纹理在某些设备上渲染得很好,而在其他设备上渲染得不好?纹理都是二次方的,大小为2的幂(即512x512、1024x1024)。这些是创建纹理时使用的设置:gl.glBindTexture(GL10.GL_TEXTURE_2D,getTextureId());//CreateNearestF

java - Opengl ES 2.0 : Get texture size and other info

问题的上下文是Android环境下的OpenGLES2.0。我有一个纹理。显示或使用都没有问题。是否有一种方法可以简单地从绑定(bind)ID开始了解其宽度和高度以及其他信息(如内部格式)?我需要在不知道纹理大小的情况下将纹理保存到位图。 最佳答案 不在ES2.0中。功能不存在实际上有点令人惊讶。您可以获取渲染缓冲区的大小,但不能获取纹理的大小,这看起来不一致。唯一可用的是您可以使用glGetTexParameteriv()获得的值,它们是纹理的FILTER和WRAP参数。它仍然不在ES3.0中。仅在ES3.1中,添加了glGetT

Android OpenGL 纹理 : creating and deleting them on the fly

我目前正在实现一个3D查看器,它基本上可以呈现用户在其SD卡上拥有的所有图像的子集。我想到的最匹配的产品是CoolIris:它只是在屏幕上显示一个由N个图block组成的滚动板,每个图block显示不同的图像,新图block进入屏幕并显示新图像。现在我的问题是:我的程序可以正常工作并很好地渲染四边形。当四边形离开屏幕时,它会被回收/释放。新的四边形在进入屏幕之前不断被添加到拼贴板上。因为可能有数百张图像,所以需要即时创建和删除纹理(这样我们就不会耗尽内存)。我遇到的问题是,在我删除纹理后,新创建的纹理似乎获得了当前正在使用的其他纹理的一些ID。我的渲染循环看起来像这样:voidrend