如何在glm中创建广告牌矩阵 [英] How to create billboard matrix in glm

查看:103
本文介绍了如何在glm中创建广告牌矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用glm从空间中的点创建广告牌转换矩阵?

How to create a billboard translation matrix from a point in space using glm?

推荐答案

只需将变换的左上3×3子矩阵设置为恒等即可.

Just set the upper left 3×3 submatrix of the transformation to identity.

void makebillboard_mat4x4(double *BM, double const * const MV)
{
    for(size_t i = 0; i < 3; i++) {

        for(size_t j = 0; j < 3; j++) {
            BM[4*i + j] = i==j ? 1 : 0;
        }
        BM[4*i + 3] = MV[4*i + 3];
    }

    for(size_t i = 0; i < 4; i++) {
        BM[12 + i] = MV[12 + i];
    }
}

void mygltoolMakeMVBillboard(void)
{
    GLenum active_matrix;
    double MV[16];

    glGetIntegerv(GL_MATRIX_MODE, &active_matrix);

    glMatrixMode(GL_MODELVIEW);
    glGetDoublev(GL_MODELVIEW_MATRIX, MV);
    makebillboard_mat4x4(MV, MV);
    glLoadMatrixd(MV);
    glMatrixMode(active_matrix);
}

这篇关于如何在glm中创建广告牌矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆