unity3D如何渲染图片?
发布网友
发布时间:2022-04-23 05:32
我来回答
共1个回答
热心网友
时间:2022-04-14 22:05
如果只考虑移动端,unity底层是调用了OpenGL来实现一个图片的渲染。如果是3D的一个quads,也就是你游戏世界的一个板子,默认是带了一个material的,那么就是基于shader的渲染实现。这样的shader里面会有一个texture变量,渲染的步骤大致如下:
1、shader编译
2、vertex和fragment link出program
3、在一次drawcall中,获取texture变量的location;激活纹理单元(单纹理的话不需要专门激活);bind纹理数据到纹理单元;将纹理单元中的数据赋值给location位置的插槽。
4、在shader中调用texture采样纹理数据。
以上省略的细节有texcoord的赋值,vs和fs数据的传输等。
如果不基于shader而是纯OpenGL API的使用,大致代码如下
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture1);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-0.1f, -0.1f, -0.4f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(0.1f, -0.1f, -0.4f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(0.1f, 0.1f, -0.4f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-0.1f, 0.1f, -0.4f);
glEnd();