为什么我的三角形在被glm :: lookAt矩阵转换后不显示?

时间:2016-06-24 22:53:45

标签: c++ opengl matrix

我正试图从不同的相机视角显示我的三角形。要做到这一点,我正在使用glm::lookAt()函数创建一个4x4矩阵,您可以使用它来转换您的积分。当我指定摄像机位置(arg1)时,这似乎工作得很好,其中x,y和z都是< = 1.0,例如view = glm::lookAt(glm::vec3(0.0, 0.0f, 1.0), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));

但是,如果我指定相机位置,例如view = glm::lookAt(glm::vec3(0.0, 0.0f, 2.0), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));,相机稍远一些,则根本不会显示形状。为什么会出现这种情况,所有tutorials I am following形状仍然显示?

我的抽奖代码(循环中):

 //bind buffers and stuff
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glm::mat4 view;
    view = glm::lookAt(glm::vec3(2.0, 1.0f, 1.0), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
    GLint viewLoc = glGetUniformLocation(sp, "view");
    glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view)); 
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

我的顶点着色器代码:(注意:在字符串中并从此字符串加载)

const char* vertexShaderData =
"#version 450 \n"
"layout(location = 0) in vec3 vp;"
"layout(location = 1) in vec3 color;"
"layout (location = 2) in vec2 texCoord;\n"
"out vec3 Color;"
"out vec2 TexCoords;\n"
"uniform mat4 view;\n"
"void main(){"
"Color=color;"
"TexCoords = texCoord;"
"gl_Position = view * vec4(vp, 1.0);" 
"}";

积分数据:(每行中前3个浮点数是实际的顶点)

static GLfloat data[] = {

    0.75f, 0.75f, 0.0f,   1.0f, 0.0f, 0.0f,       0.75f, 0.75f, 
    0.75f, -0.75f, 0.0f,     0.0f, 1.0f, 0.0f,    0.75f, -0.75f,
    -0.75f, -0.75f, 0.0f,    0.0f, 0.0f, 1.0f,    -0.75f, -0.75f,

    -0.75f, 0.75f, 0.0f,   1.0f, 0.0f, 0.0f,       -0.75f, 0.75f,
    -0.75f, -0.75f, 0.0f,     0.0f, 1.0f, 0.0f,    -0.75f, -0.75f,
    0.75f, 0.75f, 0.0f,    0.0f, 0.0f, 1.0f,        0.75f, 0.75f,
}; 

我知道其他一切都在工作,着色器都在工作/链接。具有旋转/平移矩阵的正常变换正在起作用。没有任何变换,正在正确绘制形状。

0 个答案:

没有答案
相关问题