随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

OpenGL模型变换平移、缩放、旋转注意事项

一、概述

  在OpenGL中,想要对物体(模型)进行操作,如:平移、缩放、旋转。其顺序不能错,不同的顺序会给出不同的结果

  网上的博客大家看过后要慎重使用,好多都是错误的,在实际项目中使用前最好先写demo进行验证,不然一旦整合到项目中,排错成本将会非常高。

  三者的顺序是:

    理论:先缩放、再旋转、然后平移

    实际:平移*旋转*缩放。ps:实际和理论是相反的,这个和projection*view*model是类似的。

  下面是一个简单的样例:将立方体平移到屏幕右下角。

  ps:物体的顶点坐标系是在-1.0~1.0之间。

  四个角的坐标分别为:

    右上角:(1.0f,1.0f)

    右下角:(1.0f,-1.0f)

    左下角:(-1.0f,-1.0f)

    左上角:(-1.0f,1.0f)

  所以物体变换的时候也是在--1.0f~1.0f区域变换

二、代码示例

  float scale = (float) mWidth / (float) mHeight;
    LOGE("scale:%f",0.5f/scale);

    glm::mat4 model = glm::mat4(1.0f);
    ///旋转、平移、缩放顺序不能反了
    model = glm::translate(model, glm::vec3(0.5f, -0.5f/scale, 0.0f));
    model = glm::rotate(model, 45.0f, glm::vec3(0.5f, 1.0f, 0.5f));
    model = glm::scale(model, glm::vec3(0.1f));

 

posted on   飘杨......  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2023-10-18 java在ubuntu上部署生产环境(适合小项目)
2021-10-18 posix实现最简单的生产者消费者模型
2012-10-18 Android Json通信实例
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示