Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 绘制与虚拟摄影机OpenGL平行的平面_C++_Opengl_Glsl_Rendering - Fatal编程技术网

C++ 绘制与虚拟摄影机OpenGL平行的平面

C++ 绘制与虚拟摄影机OpenGL平行的平面,c++,opengl,glsl,rendering,C++,Opengl,Glsl,Rendering,我想渲染一个始终与虚拟摄影机平行并以与摄影机相同的旋转旋转的平面。我试图将视图矩阵应用于平面,但它没有像我预期的那样移动。这是我的视图矩阵: view.setToIdentity(); view.rotate(m_rotation.conjugate()); view.translate(-m_translation); 这些是我相机的矢量: const QVector3D Camera3D::LocalForward(0.0f, 0.0f, -1.0f); const QVector3D C

我想渲染一个始终与虚拟摄影机平行并以与摄影机相同的旋转旋转的平面。我试图将视图矩阵应用于平面,但它没有像我预期的那样移动。这是我的视图矩阵:

view.setToIdentity();
view.rotate(m_rotation.conjugate());
view.translate(-m_translation);
这些是我相机的矢量:

const QVector3D Camera3D::LocalForward(0.0f, 0.0f, -1.0f);
const QVector3D Camera3D::LocalUp(0.0f, 1.0f, 0.0f);
const QVector3D Camera3D::LocalRight(1.0f, 0.0f, 0.0f);
还有我的四人组:

float x0 = -(float)32.f, y0 = -(float)32.f;
float x1 =  (float)32.f, y1 = (float)32.f;
   // Set attributes
const QVector3D vertices[4] = {
    QVector3D( x0, y0, 0.0f),
    QVector3D( x0, y1, 0.0f),
    QVector3D( x1, y1, 0.0f),
    QVector3D( x1, y0, 0.0f)
};


const QVector3D normals[4] = {
    QVector3D(0.0f, 0.0f,1.0f),
    QVector3D(0.0f, 0.0f,1.0f),
    QVector3D(0.0f, 0.0f,1.0f),
    QVector3D(0.0f, 0.0f,1.0f)
};
const QVector2D texcoords[4] = {
    QVector2D(0.0f, 1.0f),
    QVector2D(0.0f, 0.0f),
    QVector2D(1.0f, 0.0f),
    QVector2D(1.0f, 1.0f)
};


const unsigned int indices[4] = { 0, 1, 2, 3 };
// const unsigned int indices[4] = { 3, 2, 1, 0 };

shProgram.enableAttributeArray("vVertices");
shProgram.enableAttributeArray("vTexCoords");
shProgram.enableAttributeArray("vNormals");

shProgram.setAttributeArray("vVertices", vertices);
shProgram.setAttributeArray("vTexCoords", texcoords);
shProgram.setAttributeArray("vNormals", normals);

glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_INT, indices);



shProgram.disableAttributeArray("vVertices");
shProgram.disableAttributeArray("vTexCoords");
shProgram.disableAttributeArray("vNormals");

我正在使用Qt的QOpenGLWindow。我做错了什么?

“我试图将视图矩阵应用于平面,但它没有按照我的预期移动”-您必须更具体一些。它是如何移动的?你认为它应该如何移动?将旋转应用于平面的相关代码部分在哪里?请阅读:你们正在尝试做的被称为广告牌(平面/四边形)总是平行于摄像机。你可以找到很多关于如何渲染的教程。@ParitoshKulkarni非常感谢!它解决了我的问题!