调试OpenGL:是否有toString()函数用于矩阵和向量(mat3,mat4,vec3& c)

时间:2012-11-20 08:44:20

标签: c++ opengl glut opengl-3

我正在调试OpenGL程序:

是否存在某种toString()函数用于矩阵和向量(mat3,mat4,vec3& c)?

我试图避免使用cout或printf构造嵌套的for循环。

但如果这是实现这一目标的唯一方法,我很乐意听取有关最佳实践的建议。我对C ++很陌生,并且有兴趣了解它。

输出到laTeX / ConTeXt日志文件真的很酷。

这导致了问题的更广泛版本:这些对象是否有一些反射功能?我想知道我感兴趣的特定矩阵是指定列主要还是行主要,它的父类是什么/哪里,& c。

2 个答案:

答案 0 :(得分:1)

超载ofstream<<你的矩阵/向量类的运算符然后在内部格式化你想要的方式,即输出<< “(”<<<<><<“”,“<< vector.y<<等等。然后在您的主程序中,您可以简单地执行std :: cout<< myVector&lt ;< std :: endl;

http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/

该链接显示了如何实施

答案 1 :(得分:-1)

以下是重载<<运算符以打印glm::mat4的示例:

#include <iostream>

#include <glm/glm.hpp>

std::ostream& operator<<(std::ostream& stream, const glm::mat4 &matrix) {

    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return stream;
}

int main() {
    std::cout << glm::mat4(1.0f) << std::endl;
    return 0;
}

编辑:glm有一个to_string()this答案作为示例。