首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改Grafika Texture2dProgram以绘制图片(或纹理纹理)

修改Grafika Texture2dProgram以绘制图片(或纹理纹理)
EN

Stack Overflow用户
提问于 2014-08-30 14:36:03
回答 1查看 405关注 0票数 0

我是openGL的新手,所以有一些问题想出如何修改grafika texture2dProgram,这样我就可以在图片效果中获得图片(或者纹理中的纹理)。以下是我对所有例子的理解:

(在表面准备好后)

  1. 设置视图端口 GLES20.glViewport(0,0,宽度,高度);
  2. 设置具有纹理和顶点坐标的Drawable2d 新Drawable2d(矩形)
  3. 在新框架上,使用Texture2dProgram绘制带有纹理的视图。

我想把我的理解和修改,以便我得到图片输出在屏幕上。我怎样才能做到这一点?

我的理解是,我应该做以下工作:创建两个Texture2dPrograms,分配不同的纹理id,并传递不同的投影矩阵,以便一个texture2dprogram只在一个较小的部分上绘制。这是对的还是我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-30 15:48:14

Texture2dProgram类只是抽象GLES程序,封装一个顶点着色器和一个像素着色器。如果你需要不同的材质,你只需要一个以上的材质,例如你想同时使用“正常”和“外部”纹理。

如果您查看HardwareScalerActivity,您可以看到它用相同的程序绘制两个形状。你想做些类似的事。(它还创建了一个FlatShadedProgram,因为它允许您在UI中切换它们。)

Drawable2d定义形状,Program定义呈现方式,Sprite2d定义位置、大小和外观。您可以在Sprite2d对象上设置纹理ID (参见HardwareScalerActivity中的surfaceChanged() )。

这种分解一开始看起来有点奇怪,但它很符合OpenGL ES的工作方式。

至于在另一件东西上渲染一件东西,Grafika中的GLES代码是相当有限的--只是在一个平行于显示器的平面上进行2D渲染。无论你先画什么,都会被你所画的东西所覆盖。不要扰乱视图端口,只需在Sprite2d对象上设置位置和大小即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25583508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档