Форум: "Media";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизКак вывести картинку или 3D-объект на форму на OpenGL ? Найти похожие ветки
← →
Ктото (2004-09-21 07:37) [0]Есть редактор карты Vice City с открытым исходником. moomapper. В нём два вьюера. Одни 3D моделей, другой картинок. Кода мало, и всё выглядит вроде как давольно просто. Но вот понять как это работает и как оттуда эти два вьюера вырезать? для своих целей - не могу. Может кто знает как это сделать ? Или может какой дельный совет по теме ?
Исходник мунмэпера :
http://sourceforge.net/project/showfiles.php?group_id=101483&package_id=109005&release_id=215767
← →
Ктото (2004-09-22 01:18) [1]Никто не в курсе про OpenGL ?
← →
Рыба © (2004-09-22 21:55) [2]Пример из книги Краснова "OpenGL в проектах Delphi".
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL;
type
TfrmGL = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
hrc: HGLRC;
{позиция курсора}
xpos : GLfloat;
ypos : GLfloat;
end;
var
frmGL: TfrmGL;
implementation
{$R *.DFM}
{=======================================================================
Перерисовка окна}
procedure TfrmGL.FormPaint(Sender: TObject);
var
i : 1..40;
begin
wglMakeCurrent(Canvas.Handle, hrc);
glViewPort (0, 0, ClientWidth, ClientHeight);
glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета
For i := 1 to 40 do begin
glColor3f (random, random, random);
glPointSize (random (10));
glBegin (GL_POINTS);
glVertex2f (xpos + 0.2 * random * sin (random (360)),
ypos + 0.2 * random * cos (random (360)));
glEnd;
end;
SwapBuffers(Canvas.Handle); // содержимое буфера - на экран
wglMakeCurrent(0, 0);
end;
{=======================================================================
Формат пикселя}
procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar (pfd, SizeOf (pfd), 0);
pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
end;
{=======================================================================
Создание формы}
procedure TfrmGL.FormCreate(Sender: TObject);
begin
Randomize;
SetDCPixelFormat(Canvas.Handle);
hrc := wglCreateContext(Canvas.Handle);
end;
{=======================================================================
Конец работы приложения}
procedure TfrmGL.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;
{=======================================================================
Обрабока движения курсора}
procedure TfrmGL.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
xpos := 2 * X / ClientWidth - 1;
ypos := 2 * (ClientHeight - Y) / ClientHeight - 1;
Refresh; // перерисовка окна при каждом движении курсора
end;
end.
← →
Рыба © (2004-09-22 22:20) [3]Советую таки почитать Краснова. Чтобы не мучится. :)
← →
Ктото (2004-09-23 04:17) [4]
> Рыба © (22.09.04 22:20) [3]
> Советую таки почитать Краснова. Чтобы не мучится. :)
А где его скачать ? Поисковик выдаёт одни магазины, а покупать, я всё равно не буду потому, что давно отвык от бумажных книг. В них нету поиска, их надо листать, вместо того, чтобы просто кликнуть на ссылку, с них невозможно ничего скопировать ...
В Мунмэпере, я просто хотел вырезать все треугольники из моделей которые выводятся на экран, чтобы сохранить из в 3ds. А натолкнулся на какую-то дикую, необъезженную ОпенЖеЛэ. Почему этот человек не использует GLScene я вообще не понимаю.
Может ты Рыба знаешь, где там в Мунмэпере эти чёртовы треугольники запрятаны ? Ведь вроде ещё не один рипер не может выдирать из ViceCity модели ... , а очень хочется.
← →
Ктото (2004-09-23 04:46) [5]Кстати, при движении мыши над формой, изображение постоянно мигает. Так, что качество книжки под вопросом.
← →
Рыба © (2004-09-23 12:48) [6]>Ктото (23.09.04 04:17) [4]
>а покупать, я всё равно не буду потому, что давно отвык от бумажных книг.
Ну и зря.
>Ктото (23.09.04 04:46) [5]
>Кстати, при движении мыши над формой, изображение постоянно мигает. Так, что качество книжки под вопросом.
Просто не включена двойная буферизация. Качество книги отличное. Поверь.
← →
Ктото (2004-09-24 01:32) [7]
> Рыба © (23.09.04 12:48) [6]
> Качество книги отличное. Поверь.
Ну, мигает же. Если двойную буферизацию изменить, то вообще ничего не выводится.
Да и всё лучшее сканируют. Раз не остканировали, значит никому настолько сильно непонравилась.
> Ну и зря.
Появится в электронном виде - почитаю для общего развития.
Вообще чистый OpenGL против GLScene, это как ассемблер против Дельфи. Слишком много гемороя. Да и нужен он (OpenGL) для одной единственной задачи. Выдрать модели из Vice City.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c