草庐IT

Textures

全部标签

java - 在 Android OpenGL ES 应用程序中加载纹理

我想知道是否有人可以建议在AndroidJava和OpenGLES应用程序中加载纹理的良好模式。我首先关心的是确定要分配多少个纹理名称,以及如何在渲染我的顶点之前有效地执行此操作。我的第二个问题是加载纹理,我必须根据我的游戏数据推断要加载的纹理。这意味着我将玩弄字符串,我知道这是我不应该在我的GL线程中做的事情。总的来说,我了解加载纹理时发生的情况,我只想从中获得最佳生命周期。还有其他我应该考虑的事情吗? 最佳答案 1)您应该根据需要分配尽可能多的纹理名称。一个用于您正在使用的每个纹理。加载纹理是一项非常繁重的操作,会拖延渲染管道。

android - Opengl ES 1.1/Android——2011 年纹理映射到正方形的崩溃

我正在尝试将纹理映射到一个正方形上,其中纹理会拉伸(stretch)以适合正方形。目前是纹理贴图,但它没有映射到正确的位置,OGL执行了一些我不知道的倾斜等。图像是64x64,我试过的方block是从-2到2(hor和ver)和-1到1。这是图像:纹理代码为:floattexture[]={0,0,0,1,1,0,1,1};ByteBufferbyteBuf=ByteBuffer.allocateDirect(texture.length*4);byteBuf.order(ByteOrder.nativeOrder());FloatBuffertextureBuffer=byteBuf

java - (Java LibGDX) 如何在 LibGDX 中调整纹理大小?

我已经在LibGDX上玩了一段时间了,想轻松地将我的程序移植到不同的系统。我有一个背景纹理,我想将其缩放到当前使用的分辨率。图像是1920x1080,如何在运行时将其更改为当前使用的分辨率? 最佳答案 如果你想在绘图时缩放使用:Pixmappixmap200=newPixmap(Gdx.files.internal("200x200.png"));Pixmappixmap100=newPixmap(100,100,pixmap200.getFormat());pixmap100.drawPixmap(pixmap200,0,0,pi

android - 颠倒的纹理? | OpenGL-ES 2.0 (安卓)

我试图将我的纹理映射到一个用opengles2.0制作的正方形,当我这样做时,纹理出现颠倒,我的映射有误吗?或者我画它的方式?这是它的外观图片:这是我的onDrawFrame()代码publicvoidonDrawFrame(GL10glUnused){GLES20.glClearColor(0.0f,0.0f,1.0f,1.0f);GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT|GLES20.GL_COLOR_BUFFER_BIT);GLES20.glUseProgram(mProgram);GLES20.glEnable(GLES20.GL_BL

android - Android 上符合 OpenGL-ES 2.0 要求的最小纹理尺寸?

是否有特定硬件需要支持的最小纹理大小才能符合OpenGL-ES2.0规范?GL_MAX_TEXTURE_SIZE值必须至少为1024或2048或类似值?我想知道这一点的原因是因为我正在处理使用着色器的东西,因此必须是OpenGL-ES2.0。因此我想让纹理尽可能大,而不必考虑每个硬件纹理限制(比如只有512x512的旧手机)。如果有一个最小数量(或大多数设备支持的某个值)对我有很大帮助。 最佳答案 是的,任何GLES2实现都必须支持至少64像素的宽度和高度纹理。您可以使用GL_MAX_TEXTURE_SIZE枚举通过glGetInt

android - android opengl游戏的线程纹理加载过程

我有大量JPG格式的纹理。我需要在实际绘图开始之前将它们预加载到opengl内存中。我问了一个问题,有人告诉我这样做的方法是将JPEG解包与对另一个线程的glTexImage2D(...)调用分开。问题是我不太确定该怎么做。执行glTexImage2D所需的OpenGL(处理程序?)仅在GLSurfaceView.Renderer的onSurfaceCreated和OnDrawFrame方法中可用。我无法解压我所有的纹理,然后在onSurfaceCreated(...)中将它们加载到opnegl中,因为它们可能不适合有限的虚拟机内存(20-40MB?)这意味着我必须一个接一个地解压和加

Android OpenGL SurfaceTexture(外部图像)与普通纹理的结合

我想将相机预览SurfaceTexture与一些覆盖纹理混合。我正在使用这些着色器进行处理:privatefinalStringvss="attributevec2vPosition;\n"+"attributevec2vTexCoord;\n"+"varyingvec2texCoord;\n"+"voidmain(){\n"+"texCoord=vTexCoord;\n"+"gl_Position=vec4(vPosition.x,vPosition.y,0.0,1.0);\n"+"}";privatefinalStringfss="#extensionGL_OES_EGL_imag

c++ - 从 SDL2 表面创建 OpenGL 纹理 - 奇怪的像素值

我正在尝试使用SDL2为波前对象的OpenGL渲染加载纹理(目前我正在使用固定管道进行测试,但我最终计划转移到着色器)。问题是应用于四边形的加载纹理(以及使用纹理右下角的一小部分的模型)看起来像这样:(来源:image-upload.de)ThisisthetextureIused当使用SDL函数绘制时,图像加载正常并且看起来完全正常,因此可能是转换为OGL纹理时出现问题。请注意,我启用了alpha混合并且纹理仍然完全不透明-因此值不是完全随机的,并且可能不是未初始化的内存。这是我用于转换表面的代码(从此处网站上的各种教程和问题拼凑而成):GLuintglMakeTexture(boo

opengl - 在两个应用程序之间共享 OpenGL 帧缓冲区/渲染缓冲区

假设我有一个应用程序A,它负责通过OpenGL库在屏幕上绘制内容。出于紧密集成的目的,我想让这个应用程序A完成它的工作,但在FBO中渲染或直接在渲染缓冲区中渲染,并允许应用程序B具有只读访问此缓冲区以处理屏幕上的显示(基本上将其渲染为2D纹理)。似乎FBO属于OpenGL上下文,并且上下文不可在进程之间共享。我绝对理解允许多个进程在同一上下文中混淆是邪恶的。但就我的具体情况而言,我认为认为它可能非常安全是合理的。编辑:渲染大小接近全屏,我在考虑2048x204832bits缓冲区(我现在不使用alphachannel,但为什么以后不使用)。 最佳答案

ios - 如何在 OpenGL ES1 中跟踪纹理上的点?

在我的iOS应用程序中,我将纹理应用到在OpenGLES1中渲染的球体。球体可以由用户旋转。如何在任何给定时间跟踪纹理上的给定点在2D空间中的位置?例如,在1000像素x1000像素的纹理上给定点(200,200),我想在我的OpenGLView顶部放置一个UIButton,以在球体被操纵时跟踪该点。执行此操作的最佳方法是什么?在我的第一次尝试中,我尝试使用一种颜色拾取技术,我在屏幕外帧缓冲区中有一个单独的球体,该球体使用黑色纹理和点(200,200)处的红色方block。然后,我使用glReadPixels()来跟踪红色方block的位置,并相应地移动我的按钮。不幸的是,出于明显的性