C++ 为什么使用程序会导致我的形状消失?

C++ 为什么使用程序会导致我的形状消失?,c++,opengl,sfml,glm-math,C++,Opengl,Sfml,Glm Math,下面的代码在屏幕上绘制一个白色正方形。如果我取消对使用该程序的行的注释,则方块将消失 当我使用GLIntercept调试程序时,纹理显示在名为Images的文件夹中,日志显示着色器已编译。然而,它也表示程序链接,但没有验证 我已经仔细研究了好几个小时了,我不知道接下来该怎么办 //Vertex.vert #版本150核心 在vec3中处于_位置; 在vec2的in_纹理中; 输出vec2纹理; 统一mat4-in_模型; 视图中的统一mat4; 均匀mat4 in_投影; void main()

下面的代码在屏幕上绘制一个白色正方形。如果我取消对使用该程序的行的注释,则方块将消失

当我使用GLIntercept调试程序时,纹理显示在名为Images的文件夹中,日志显示着色器已编译。然而,它也表示程序链接,但没有验证

我已经仔细研究了好几个小时了,我不知道接下来该怎么办

//Vertex.vert
#版本150核心
在vec3中处于_位置;
在vec2的in_纹理中;
输出vec2纹理;
统一mat4-in_模型;
视图中的统一mat4;
均匀mat4 in_投影;
void main()
{
gl_位置=在_投影*在_视图*在_模型*vec4中(在_位置,1.0);
纹理=in_纹理;
}
//碎片碎片
#版本150核心
在vec2结构中;
输出vec4颜色;
均匀取样器2D取样器2D;
void main()
{
颜色=纹理(2D,纹理);
}
//Source.cpp
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括“Archive.h”
使用名称空间glm;
使用名称空间sf;
使用名称空间std;
结构摄像机
{
vec3位置={0.0f,0.0f,1.0f};
vec3目标={0.0f,0.0f,0.0f};
vec3-Up={0.0f,1.0f,0.0f};
浮子Fovy=74.0f;
浮动角度=16.0f/9.0f;
浮动ZNear=FLT_MIN;
浮动ZFar=FLT_MAX;
mat4视图;
mat4投影;
};
结构演员
{
vec3标度={1.0f,1.0f,1.0f};
vec3旋转={0.0f,0.0f,0.0f};
vec3位置={0.0f,0.0f,0.0f};
向量顶点;
矢量元素;
胶合结构;
参与者(字符串文件名)
{
图像;
如果(!image.loadFromFile(fileName+“.png”))
{

cerr这是两件事的结合

当我上次使用此代码时,它与GLM 0.9.7.6一起使用,并且
mat4()
生成了一个标识矩阵。但是,在该版本的GLM与我当前使用的版本(0.9.9.5)之间的某个点上,
mat4()
开始生成一个空矩阵。相反,您需要
mat4(1.0f)


此外,我对近平面和远平面使用了错误的值。我确实认为我的值会起作用,但显然我不太明白幕后发生了什么。

你确定立方体不只是在你的可见区域之外吗?你似乎在原点周围从-1到1绘制了一个立方体,并将相机放置在离原点1个单位的地方n、 立方体的正面可能位于近平面的前面。所有其他面都可能通过背面消隐进行消隐。@BDL问题的一半是近平面,是的。