Android OpenGL20 世界坐标系,屏幕坐标系,纹理坐标系 <8>



http://blog.csdn.net/qq_31726827/article/details/51265186这一篇大概介绍了坐标系,但是如何应用的呢?并没有特别说明,下面通过测试Sample来说一下.


第一个想说的:世界坐标系,这个坐标很容易,opengl 坐标原点默认给在屏幕中间,一般3D 顶点参照使用这个坐标系,具体参见上面的博客.这里介绍一下着色是如何进行的,工程代码参照上一篇的代码:

private float vertexs[]={
            0.0f,0.0f,0.0f,
            1.0f,0.0f,0.0f,
            0.0f,1.0f,0.0f
    };

    private float colors[]={
            1.0f,0.0f,0.0f,1.0f,//R,G,B,A
            0.0f,1.0f,0.0f,1.0f,
            0.0f,0.0f,1.0f,1.0f
    };

上面给出顶点坐标和着色颜色.下面来看看它的具体使用:

mPositionHandle=GLES20.glGetAttribLocation(mProgram,"a_Position");
        GLES20.glVertexAttribPointer(mPositionHandle,3,GLES20.GL_FLOAT,false,0,vertexsBuffer);
        GLES20.glEnableVertexAttribArray(mP
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Python代码,它使用OpenGL世界坐标系下渲染一个图像: ```python from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * # 定义顶点 vertices = ((-1, -1, 0), (1, -1, 0), (1, 1, 0), (-1, 1, 0)) # 定义纹理坐标 texcoords = ((0, 0), (1, 0), (1, 1), (0, 1)) # 定义索引 indices = ((0, 1, 2), (0, 2, 3)) # 定义纹理图像 image = [ [255, 0, 0, 255], [ 0, 255, 0, 255], [ 0, 0, 255, 255], [255, 255, 255, 255], ] def init(): glClearColor(0.0, 0.0, 0.0, 1.0) glEnable(GL_DEPTH_TEST) glEnable(GL_TEXTURE_2D) def display(): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # 设置投影矩阵 glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60.0, 1.0, 0.1, 100.0) # 设置模型视图矩阵 glMatrixMode(GL_MODELVIEW) glLoadIdentity() gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) # 绑定纹理 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, image) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) # 开始绘制 glBegin(GL_TRIANGLES) for i in range(len(indices)): for j in range(len(indices[i])): glTexCoord2fv(texcoords[indices[i][j]]) glVertex3fv(vertices[indices[i][j]]) glEnd() glutSwapBuffers() if __name__ == '__main__': glutInit() glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(400, 400) glutCreateWindow("OpenGL Window") glutDisplayFunc(display) init() glutMainLoop() ``` 这个代码中,我们创建了一个窗口,并在其中使用OpenGL绘制了一个带有纹理的正方形。我们使用顶点、纹理坐标和索引来定义几何形状,然后将纹理与之关联,最后用OpenGL来绘制形状。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值