C++OpenGL/FreeType滚动字体
C++ OpenGL / FreeType scrolling font
为了寻找滚动文本的最佳方式,我在Slackware上使用了带有OpenGL/c++的freetype lib。
我基本上是在使用nehe示例的freetype设置/打印方法。http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/
举个例子,我想让一些文本从下到上慢慢侵蚀,一个像素接一个像素,有什么想法吗?
虽然我还没有完全检查他们的代码,但最好更改TexCord/Vertex数据吗?
glBegin(GL_QUADS);
glTexCoord2d(0,0); glVertex2f(0,bitmap.rows);
glTexCoord2d(0,y); glVertex2f(0,0);
glTexCoord2d(x,y); glVertex2f(bitmap.width,0);
glTexCoord2d(x,0); glVertex2f(bitmap.width,bitmap.rows);
glEnd();
glPopMatrix();
glTranslatef(face->glyph->advance.x >> 6 ,0,0);
任何建议都会对有帮助
您可以使用剪裁平面。它们将确定将在其中呈现文本的区域。您可以在每帧中移动剪裁平面,以便剪裁/可见区域发生更改,并且您的文本将为slowly erode from the bottom up, pixel by pixel
。
此代码从右侧和左侧剪辑文本:
procedure TRenderUI.SetupClipX(X1,X2:smallint);
var cp:array[0..3]of real; //Function uses 8byte floats //ClipPlane X+Y+Z=-D
begin
glEnable(GL_CLIP_PLANE0);
glEnable(GL_CLIP_PLANE1);
FillChar(cp, SizeOf(cp), 0);
cp[0] := 1; cp[3] := -X1; //Upper edge
glClipPlane(GL_CLIP_PLANE0, @cp);
cp[0] := -1; cp[3] := X2; //Lower edge
glClipPlane(GL_CLIP_PLANE1, @cp);
end;
//Release all clipping planes
procedure TRenderUI.ReleaseClip;
begin
glDisable(GL_CLIP_PLANE0);
glDisable(GL_CLIP_PLANE1);
end;
最多可以同时使用4个剪裁平面。
相关文章:
- 在C++中测量postscript字体宽度
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何在Directwrite中获得给定字体的可用OpenType功能
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 如何在不使用滚动条的情况下使视图更改
- 如何为对象生成滚动效果?
- 如何模拟不同边数的骰子滚动?
- 如何初始化升压滚动窗口累加器?
- 实现包含多个 QQuickPaintedItems 的 QQuickView 的滚动
- SetCurrentConsoleFontEx() 不适用于自定义安装的字体
- C++ wxWidgets:在创建小部件后设置字体
- C++ wxWidgets:更改大小器的字体
- 通过水平滚动条更改标签
- 如何防止 Windows 控制台上的回车键自动滚动
- C++ 位图中的 ttc 字体
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- Qt:无法直接为带有子项的小部件添加滚动条
- 更改 Windows GUI 中静态文本框的字体大小
- C++OpenGL/FreeType滚动字体