随笔 - 632  文章 - 17  评论 - 54  阅读 - 92万
  2024年10月18日

一、概述

  在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 @ 2024-10-18 11:44 飘杨...... 阅读(210) 评论(0) 推荐(0) 编辑
  2024年9月24日
摘要: 一、概述 参考地址:https://www.cnblogs.com/eddyz/p/17869403.html 阅读全文
posted @ 2024-09-24 16:41 飘杨...... 阅读(10) 评论(0) 推荐(0) 编辑
  2024年9月20日
摘要: 一、概述 在使用android的jni能力的时候出现了编译错误 -DANDROID_STL=c++_static" does not exist. 产生这个异常的原因是找不到了STL静态库。 二、解决办法 使用动态库就行了 arguments "-DANDROID_STL=c++_shared" 阅读全文
posted @ 2024-09-20 15:25 飘杨...... 阅读(56) 评论(0) 推荐(0) 编辑
  2024年9月19日
摘要: 一、概述 使用场景:在音视频开发中,用YUV数据+OpenGL进行画面渲染。经常会将Y分量、U分量、V分量分开。分别上传到GPU,由GPU转换为RGB进行最终展示。 使用这种方式的原因是基于GPU计算效率高为前提的。 在这个过程中经常会用到一个c函数memcpy。将yuv数据分别copy到不同的内存 阅读全文
posted @ 2024-09-19 17:40 飘杨...... 阅读(30) 评论(0) 推荐(0) 编辑
  2024年9月18日
摘要: 一、概述 在AndroidStudio中集成opencv,使用其native函数时报的一个错误 二、解决办法 opencv提供的native文件夹中提供的是动态库 但是在gradle中的配置中,配置的stl是静态的,将其改为shared就行了 externalNativeBuild { cmake 阅读全文
posted @ 2024-09-18 17:41 飘杨...... 阅读(916) 评论(0) 推荐(0) 编辑
  2024年9月11日
摘要: 一、概述 在数字图像处理中,特别是视频播放领域。YUV转RGB或者RGB转YUV非常常用。 就目前来说有三个标准: 1.标准模式 BT601 2.高清模式 BT709 3.超清模式 BT2020 二、转换规则 转换公式如下 阅读全文
posted @ 2024-09-11 17:39 飘杨...... 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 一、概述 问题现象: 在做NDK开发时,项目能正常运行。kotlin/java端不报错。ndk端(cpp)会出现找不到系统头文件的情况。如:<jni.h>文件都找不到。但是此时项目运行起来是一点问题没有。 此时的在ndk的cpp文件夹下写代码是没有智能提示的,那效率是相当的低,果断不能。 使用cma 阅读全文
posted @ 2024-09-11 09:51 飘杨...... 阅读(77) 评论(0) 推荐(0) 编辑
  2024年9月9日
摘要: 一、概述 介绍一下常用的标准坐标系 1.标准坐标系 2.屏幕坐标系 3.纹理坐标系 4.FBO坐标系 阅读全文
posted @ 2024-09-09 17:23 飘杨...... 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 一、概述 上一节实践了,通过改变GLSurfaceView的宽高来解决图像变形的问题。 本节将通过正交投影的方式解决图像变形的问题。 分三步: 1.计算屏幕的宽高比及图像的宽高比 var screenRatio = screenWidth.toFloat() / screenHeight var i 阅读全文
posted @ 2024-09-09 16:51 飘杨...... 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在使用OpenGL ES做纹理贴图的时候,图片有小有大。默认情况下纹理是撑满整个屏幕的。 这就导致大图会被压扁、小图会被拉伸。这种体验相当不好。 解决此问题的其中一种方式是:通过缩小GLSurfaceView的宽或高来解决问题。ps:公式可以看做是固定的,直接使用即可。 1.根据屏幕及图像 阅读全文
posted @ 2024-09-09 16:42 飘杨...... 阅读(81) 评论(0) 推荐(0) 编辑
< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8

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