C++ Freetype2-图示符不呈现/显示

C++ Freetype2-图示符不呈现/显示,c++,opengl,freetype2,C++,Opengl,Freetype2,我正在开发一个2D游戏引擎,我想实现文本渲染。我想用freetype。我有以下代码: GLuint-va; Glgenvertexarray(1号和弗吉尼亚州); GLuint-vb; glGenBuffers(1,&vb); glBindVertexArray(va); glBindBuffer(GL_数组_BUFFER,vb); glBufferData(GL_数组_缓冲区,大小(浮点)*6*4,空,GL_动态_绘制); GlenableVertexAttributeArray(0); gl

我正在开发一个2D游戏引擎,我想实现文本渲染。我想用freetype。我有以下代码:

GLuint-va;
Glgenvertexarray(1号和弗吉尼亚州);
GLuint-vb;
glGenBuffers(1,&vb);
glBindVertexArray(va);
glBindBuffer(GL_数组_BUFFER,vb);
glBufferData(GL_数组_缓冲区,大小(浮点)*6*4,空,GL_动态_绘制);
GlenableVertexAttributeArray(0);
glvertexattributepointer(0,4,GL_FLOAT,GL_FALSE,4*sizeof(FLOAT),0);
glBindBuffer(GL_数组_BUFFER,0);
glBindVertexArray(0);
FT_面测试面;
FT_误差;
error=FT_New_Face(ftlib,“arial.ttf”、0和testface);
if(error==FT\u Err\u未知\u文件\u格式)
{
std::cout bitmap.rows),
glm::ivec2(测试面->字形->左位图,测试面->字形->顶部位图),
testface->glyph->advance.x
};
插入(std::pair{c,newchar});
}
FT_Done_面(测试面);
//glPixelStorei(GLU解包对齐,4);
glUseProgram(文本着色器程序);
glUniform4f(glGetUniformLocation(text_shader_程序,“textColor”)、1.f、1.f、1.f、1.f;
玻璃纹理(GL_纹理0);
std::string::const_迭代器c;
std::string text=“测试”;
glBindVertexArray(va);
浮动x=0.f;
对于(c=text.begin();c!=text.end();c++)
{
字符ch=字符[*c];
浮点数xpos=x+ch.轴承x;
浮动ypos=0.f-(通道尺寸y-通道轴承y);
浮子w=通道尺寸x;
浮子h=ch.size.y;
浮动顶点[6][4]={
{xpos,ypos+h,0.f,0.f},
{xpos,ypos,0.f,1.f},
{xpos+w,ypos,1.f,1.f},
{xpos,ypos+h,0.f,0.f},
{xpos+w,ypos,1.f,1.f},
{xpos+w,ypos+h,1.f,0.f}
};
glBindTexture(GL_TEXTURE_2D,ch.textureID);
glBindBuffer(GL_数组_BUFFER,vb);
glBufferSubData(GL_数组_BUFFER,0,sizeof(顶点),顶点);
glBindBuffer(GL_数组_BUFFER,0);
gldrawArray(GL_三角形,0,6);
x+=(ch.advance>>6);
}
glBindVertexArray(0);
glBindTexture(GL_TEXTURE_2D,0);
我使用初始化库(在上面的代码发生之前)

FT_Error Error=FT_Init_FreeType(&ftlib);
如果(错误)
{

std::cout问题似乎是由于不使用z坐标。问题是,当使用坐标空间-1到1时,文本呈现的比例太大,无法看到或识别。解决方法是使用z坐标作为静态相机视图,因此对于500x500窗口,边框为-250.f和250.f