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

Вниз

Как вывести картинку или 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.025 c
6-1097154229
Боян Георгиев
2004-10-07 17:03
2004.12.19
TidHTTPServer: как послать ехе файл для download к потребителю?


14-1101190656
АрияРок
2004-11-23 09:17
2004.12.19
Ария - СУПЕР!!!


9-1085669345
Micah'GF
2004-05-27 18:49
2004.12.19
DelphiX: А вы не верили!?!


3-1101129920
Tor
2004-11-22 16:25
2004.12.19
Создание dbf


1-1102446946
Ust
2004-12-07 22:15
2004.12.19
Автоматическое форматирование исходного кода