Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Двойная буфферизация   Найти похожие ветки 

 
ЛенаОД   (2006-03-09 18:49) [0]

Я пишу интерактивное приложение для работы с графикой.использую OpenGL(с двойной буфферизацией).Но текст мне нужно выводить Windows-овский(тип шрифта менять и т.д.), решила использовать функцию TextOut, но он мерцает.Написала Form1.DoubleBuffered:=True; - не помогает.


 
KreeS ©   (2006-03-09 18:56) [1]

вот примерно как windows"овский шрифт делается в OGL...

function glCreateFont(const Name: String; Width, Height, Weight: Integer; DC: HDC) : Cardinal;
var
 font : HFONT;
begin
 Result := glGenLists(256);
 font := CreateFont(Height, Width, 0, 0, Weight, 0, 0, 0, RUSSIAN_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE or DEFAULT_PITCH, PChar(Name));
 SelectObject(DC, font);
 wglUseFontBitmaps(DC, 0, 256, Result);
 DeleteObject(font);
end;

procedure glFontFree(Font: Cardinal);
begin
 glDeleteLists(Font, 256);
end;

procedure glTextOut(const Text: String; X, Y: Single; Font: Cardinal);
begin
 glDisable(GL_TEXTURE_2D);
 glRasterPos2f(X, Y);
 glListBase(Font);
 glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
end;

потом делаешь так...

var
 courier_new: Cardinal;
 ...
 courier_new := CreateFont...

Ну и дальше все просто.
Ничего мерцать не должно.


 
ЛенаОД   (2006-03-09 19:18) [2]

Я так уже делала, но во-первых текст достаточно кривоват, даже сглаживание не помогает, а во-вторых я ж не могу таким образом выбирать встроеные шрифты Windows


 
KreeS ©   (2006-03-09 19:43) [3]

Можешь, нужно просто в качестве Name указывать имя windows шрифта, например "Courier New" или "Arial".
Шрифт получается точно такой же как в системе, если его не масштабировать, а рисовать того же размера, какой указан при создании.

PS. С прошедшим :)


 
KreeS ©   (2006-03-09 19:46) [4]

можешь заглянуть в соседнюю тему про War Metal, там в моей демке текст консоли выводитя точно таким способом, буквально из своего движка кусок скопировал, налетайте, халява :)


 
ЛенаОД   (2006-03-09 20:34) [5]

Спасибо за поздравления и за информацию



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.066 c
2-1166520745
KyRo
2006-12-19 12:32
2007.01.14
Расскажите как объявлять вункции из dll


2-1166632717
Grey-SPB
2006-12-20 19:38
2007.01.14
Кнопка отмены или выхода (без закрытия всей прогр.)


15-1166995339
PHPdeveloper
2006-12-25 00:22
2007.01.14
опять запрос, но другой вопрос :)


1-1164180231
Kavi
2006-11-22 10:23
2007.01.14
Запрет запуска программы по хешу


1-1164016150
BasilAKANaiL
2006-11-20 12:49
2007.01.14
Объект из процедурной ссылки