我是openGL的新手,所以有一些问题想出如何修改grafika texture2dProgram,这样我就可以在图片效果中获得图片(或者纹理中的纹理)。以下是我对所有例子的理解:
(在表面准备好后)
我想把我的理解和修改,以便我得到图片输出在屏幕上。我怎样才能做到这一点?
我的理解是,我应该做以下工作:创建两个Texture2dPrograms,分配不同的纹理id,并传递不同的投影矩阵,以便一个texture2dprogram只在一个较小的部分上绘制。这是对的还是我遗漏了什么?
发布于 2014-08-30 15:48:14
Texture2dProgram类只是抽象GLES程序,封装一个顶点着色器和一个像素着色器。如果你需要不同的材质,你只需要一个以上的材质,例如你想同时使用“正常”和“外部”纹理。
如果您查看HardwareScalerActivity,您可以看到它用相同的程序绘制两个形状。你想做些类似的事。(它还创建了一个FlatShadedProgram,因为它允许您在UI中切换它们。)
Drawable2d定义形状,Program定义呈现方式,Sprite2d定义位置、大小和外观。您可以在Sprite2d对象上设置纹理ID (参见HardwareScalerActivity中的surfaceChanged() )。
这种分解一开始看起来有点奇怪,但它很符合OpenGL ES的工作方式。
至于在另一件东西上渲染一件东西,Grafika中的GLES代码是相当有限的--只是在一个平行于显示器的平面上进行2D渲染。无论你先画什么,都会被你所画的东西所覆盖。不要扰乱视图端口,只需在Sprite2d对象上设置位置和大小即可。
https://stackoverflow.com/questions/25583508
复制相似问题