Визуальные аффекты
Bitmap. Free; end; end; end;
Это универсальная процедура и годится для любых форматов. Почитать так же последние новости вы можете тут: http://www.maxinews.net/.
В ней осуществляется сравнительно много действий, и вызывается она два раза — для подготовки рисования и планеты, и спутника. Используются дисплейные списки:
Quadric := gluNewQuadric; gluQuadricTexture (Quadric, TRUE); // обычные параметры текстуры
glTexParameteri (GL_TEXTURE_2D, GL_TEXTUBE_MIN_FILTER. GL_KEAEEST ; glTexParameteri (GL_TEXTUKE_2D, GL_TEXTURE_MftG_FILTER, GL_NEABEST) ; // включать режим текстуры для оптимизации надо было Сы в кадре glEnable(GL_TEXTURE_2D) I It список для Земли glNewList (Earth, GLJXIMPILE);
Preparelmage (*.. \earth.bmp* >; // подготавливаем образ
gluSphere (Quadric, 1.0, 24, 24); glEndList; // список для Луны glNewList (Moon, GLJXlMPILE);
Preparelmage ('. .\nioon.bmp'\; // образ другой
glPushMatrix; // будет перемещение
gITranslatef (1.3, 1.3, 0.3);
gluSphere (Quadric, 0.2, 24, 24];
glPopMatrix; // возвращаемся на место
glEndList;
Предлагаю вам срисовать звезды
Должен сразу извиниться перед астрономами за множество допущенных в этой модели ошибок, с позиций современной науки она совершенно безграмотная, и использовать ее для уроков астрономии нельзя!
В процедуру подготовки образа текстуры передается имя файла растра, создание образа текстуры включено в код процедуры:
procedure TfirnCL-Preparelmagefbrnap string ,
// тип для динамического массива, код подходит для всех версий Delphi type
PPixelArray - "TPixelArray; TPixelArray = array [0..0] of Byte; var
Bitunap : TBitmap;
Data : PPixelArray; // образ текстуры, размер заранее не оговариваем
BMInfo : TBitmapInfo; // заголовок файла
I, Imagesize : integer;// вспомогательные переменные
Temp : Byte; // для перестановки цветов
MemDC : HDC; // вспомогательный идентификатор
begin
Bitmap TBitmap.Create;
Bitmap.LoadFromFile (bmap); // считываем образ из файла with BMinfo.bmiHeader do begin
FillChar (BMInfo, SizeOf(BMInfo), 0); // считываем заголовок
biSize := sizeof (TBitmapInfoHeader);
biBitCount 24;
biWidth := Bitmap.Width;
biHeight := Bitmap.Height;
ImageSize biWidth * biHeight;
biplanes 1;
biCompression : BI RGB;
MemDC :=* CreateCompatibleDC {0>;
GetMem (Data, ImageSize * 3); // создаем динамический массив try
GetDIBits {MemDC, Bitmap.Handle, 0, biHeight, Data, // считываем
BMInfo, DIB_RGB_C0LORS\; // в DIB-формат растр
// ситового массива For I 0 to ImageSize — 1 do begin // переставляем цвета Temp := Data [I * 31; Data [I * 3] := Data [1*3+2]; Data [1*3*2] := Temp?
end;
glTexImage2d{GLJTEXTURE_2D, 0, 3, biWidth, // создаем образ biHeight, 0, GL_RGB, GL_UNSIGNED_BrTE, Data);
finally
FreeMem (Data); // освобождаем память DeleteDC (MemDC);
Опубликовал vovan666
September 19 2013 13:41:54 ·
0 Комментариев ·
2938 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.