2011-09-10 8 views
2

SlackwareのOpenGL/C++でfreetype libを使用しています。C++ OpenGL/FreeTypeスクロールフォント

私は基本的に、freetypeの設定/印刷方法にneheの例を使用しています。 http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/

たとえば、テキストを下から上へ、ピクセルごとに、アイデアをゆっくりと崩したかったとします。

私はコードを完全に調べていませんが、TexCoord/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); 

任意のアドバイスは、すべてあなたがそのためにクリップ面を使用することができ

答えて

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つのクリッピング平面まで使用することができます。