我是openGL的新手,因此有一些问题可以找出如何修改grafika texture2dProgram以便我可以获得图片效果(或纹理纹理)。以下是我对所有例子的理解:
(表面准备好后)
设置视口
GLES20.glViewport(0, 0, width, height);
设置具有纹理和顶点坐标的Drawable2d
new Drawable2d(RECTANGLE)
在新框架上,使用Texture2dProgram绘制带纹理的视口
我想了解并修改,以便在屏幕上输入图片输出。我该如何实现这一目标?
我的理解是我应该执行以下操作:创建两个Texture2dPrograms并分配不同的纹理id并传递不同的投影矩阵,以便一个texture2dprogram仅绘制较小的部分。这是正确的还是我错过了什么?
答案 0 :(得分:1)
Texture2dProgram class只是抽象GLES程序,封装顶点着色器和像素着色器。如果您需要不同的着色器,则只需要多个着色器,例如你想要使用“普通”和“外部”纹理。
如果查看HardwareScalerActivity,您可以看到它使用相同的程序绘制两个形状。你想做类似的事情。 (它还会创建一个FlatShadedProgram
,因为它允许您在UI中在它们之间进行切换。)
Drawable2d
定义形状,Program
定义它的呈现方式,Sprite2d定义位置,大小和外观。您在Sprite2d
对象上设置纹理ID(请参阅surfaceChanged()
中的HardwareScalerActivity
)。
这种分解起初看起来有点奇怪,但它与OpenGL ES的工作方式很吻合。
就另一件事情而言,渲染一件事情时,Grafika中的GLES代码非常有限 - 只需在与显示器平行的单个平面中进行2D渲染。无论你先画的是什么,都会被你画的东西所覆盖。不要混淆视口,只需在Sprite2d
对象上设置位置和大小。