我正在调试OpenGL程序:
是否存在某种toString()函数用于矩阵和向量(mat3,mat4,vec3& c)?
我试图避免使用cout或printf构造嵌套的for循环。
但如果这是实现这一目标的唯一方法,我很乐意听取有关最佳实践的建议。我对C ++很陌生,并且有兴趣了解它。
输出到laTeX / ConTeXt日志文件真的很酷。
这导致了问题的更广泛版本:这些对象是否有一些反射功能?我想知道我感兴趣的特定矩阵是指定列主要还是行主要,它的父类是什么/哪里,& c。
答案 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答案作为示例。