Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1102411406
mega
2004-12-07 12:23
2004.12.19
Дорисовка PopupMenu


14-1101557346
gn
2004-11-27 15:09
2004.12.19
Китайское правительство ограничит использование заграничного ПО


6-1097349507
Ralf
2004-10-09 23:18
2004.12.19
Пересылка файлов


14-1101406105
Cerberus
2004-11-25 21:08
2004.12.19
lsass.exe


4-1099323488
Alexey_Trofimov
2004-11-01 18:38
2004.12.19
Отключить мышь или чтоб его небыло видно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский