Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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 更改Z坐标时不显示对象(OpenGL)?_C_Opengl_Perspectivecamera - Fatal编程技术网

C 更改Z坐标时不显示对象(OpenGL)?

C 更改Z坐标时不显示对象(OpenGL)?,c,opengl,perspectivecamera,C,Opengl,Perspectivecamera,在OpenGL中渲染时出现问题。一切都显示得很好,直到我改变Z坐标,它才会被剪掉/看不见!这就是发生的事吗?我的透视投影矩阵设置错误吗?我被难住了 我的渲染代码的相关位(funcs是一个外部库,类似于它们的GL-friends) 还要注意的是,我尝试了正反两个方向的翻译。您评论的最接近值为0.1f,翻译时您将z:transvec[2]设置为-2.0f 所以它在近平面之前,这意味着它将在世界空间中被渲染到你的眼睛后面 这似乎是它消失的原因。您要将其从/更改为什么?检查您的近距离范围。@mihai

在OpenGL中渲染时出现问题。一切都显示得很好,直到我改变Z坐标,它才会被剪掉/看不见!这就是发生的事吗?我的透视投影矩阵设置错误吗?我被难住了

我的渲染代码的相关位(funcs是一个外部库,类似于它们的GL-friends)


还要注意的是,我尝试了正反两个方向的翻译。

您评论的最接近值为0.1f,翻译时您将z:transvec[2]设置为-2.0f

所以它在近平面之前,这意味着它将在世界空间中被渲染到你的眼睛后面


这似乎是它消失的原因。

您要将其从/更改为什么?检查您的
近距离范围。@mihai maruseac:mat4_透视图(60.0f、800.0f/600.0f、0.1f、100.0f、NULL);将“近”设置为0.1f,将“远”设置为100.0F,并更改z坐标?@mihai maruseac:vec3_t transvec=vec3_create(NULL);transvec[0]=0.0f;transvec[1]=0.0f;transvec[2]=-2.0f;mat4_translate(modelview、transvec、modelview);(这是注释掉的行),但当该值设置为正或负时,它将消失。@Shokwav我总是将透视设置为:viewFrustum.SetPerspective(35.0f,float(len)/float(wide),15000)
vec3_t eyevec = vec3_create(NULL);
eyevec[0] = 0.0f;
eyevec[1] = 0.0f;
eyevec[2] = 0.1f;
vec3_t centervec = vec3_create(NULL);
centervec[0] = 0.0f;
centervec[1] = 0.0f;
centervec[2] = 0.0f;
vec3_t upvec = vec3_create(NULL);
upvec[0] = 0.0f;
upvec[1] = 1.0f;
upvec[2] = 0.0f;

vec3_t transvec = vec3_create(NULL);
transvec[0] = 0.0f;
transvec[1] = 0.0f;
transvec[2] = -2.0f;

mat4_t perspective = mat4_perspective(60.0f, 800.0f / 600.0f, 0.1f, 100.0f, NULL);
mat4_lookAt(eyevec, centervec, upvec, perspective);

mat4_t modelview = mat4_identity(NULL);
//mat4_translate(modelview, transvec, modelview); objects vanish when doing this!
mat4_multiply(perspective, modelview, perspective);

const GLfloat verts[] = {
   //verts
   0.0f, 0.0f, 0.0f, 1.0f,
   0.0f, 0.5f, 0.0f, 1.0f,
   0.5f,  0.5f, 0.0f, 1.0f,
   0.5f,  0.0f, 0.0f, 1.0f,
   //colors
   1.0f, 0.3f, 0.4f, 0.5f,
   0.5f, 0.1f, 0.4f, 0.3f,
   0.0f,  1.0f, 0.5f, 0.6f,
   0.0f,  1.0f, 0.5f, 0.6f,
   //tex coords
   0.0f, 0.0f,
   0.0f, 1.0f,
   1.0f, 1.0f,
   1.0f, 0.0f,
};

const GLushort indices[] = {3, 0, 2, 0, 2, 1};

    glDrawElements(GL_TRIANGLE_STRIP, 6, GL_UNSIGNED_SHORT, NULL);