glVertex3f缩放问题
glVertex3f Scaling issues
OpenGL的新手,请放心。我的任务是在我的学校项目中使用GLFont来渲染文本,我在下面粘贴了它的渲染方法。我已经使用glOrtho
将原点设置为窗口的左上角,但这会导致GLFont倒置呈现字符的问题。我需要做的是按-1
缩放y
,但我不知道如何更改下面的渲染器。有什么想法吗?
void GLFont::RenderText (const char* String, float x, float y, float z, float size)
{
//Return if we don't have a valid glFont
if (!ok)
{
throw GLFontError::InvalidFont();
}
//Get length of string
int Length = strlen(String);
//Begin rendering quads
glBegin(GL_TRIANGLE_STRIP);
//Loop through characters
for (int i = 0; i < Length; i++)
{
//Get pointer to glFont character
GLFONTCHAR *Char = &Font.Char[(int)String[i] - Font.IntStart];
float dx = Char->dx*size;
float dy = Char->dy*size;
//Specify vertices and texture coordinates
glTexCoord2f(Char->tx1, Char->ty2);
glVertex3f(x, y - dy, z);
glTexCoord2f(Char->tx1, Char->ty1);
glVertex3f(x, y, z);
glTexCoord2f(Char->tx2, Char->ty2);
glVertex3f(x + dx, y - dy, z);
glTexCoord2f(Char->tx2, Char->ty1);
glVertex3f(x + dx, y, z);
//Move to next character
x += dx;
}
//Stop rendering quads
glEnd();
}
我建议在代码中反转"char->ty1"answers"char->ty2",而不是缩放:
//Specify vertices and texture coordinates
glTexCoord2f(Char->tx1, Char->ty1);
glVertex3f(x, y - dy, z);
glTexCoord2f(Char->tx1, Char->ty2);
glVertex3f(x, y, z);
glTexCoord2f(Char->tx2, Char->ty1);
glVertex3f(x + dx, y - dy, z);
glTexCoord2f(Char->tx2, Char->ty2);
glVertex3f(x + dx, y, z);
这将导致通过y轴反转纹理贴图。
希望它能有所帮助!
只需翻转投影,即交换您交给glOrtho
的top
和bottom
参数的值。如果启用了剔除,则还必须将剔除绕组设置为相反的方向。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- 仅当类型为 std::complex 时,才进行缩放
- 将 VS Code 用于跨平台可缩放C++项目
- 根据帧速率缩放/缩小数字
- 在 c++ 中缩放浮点值
- 如何防止 DirectX C++程序的拉伸/缩放
- 野牛C 解析器缩放问题
- GDI+ 图像缩放问题
- glVertex3f缩放问题