Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 00:50   #1
newStudent
Пользователь
 
Аватар для newStudent
 
Регистрация: 07.07.2010
Сообщений: 44
Вопрос [OpenGL, Delphi] Добавление текстур на грани куба

Доброго времени суток! Имеется следующий готовый исходник:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  GL, GLU, StdCtrls, ExtCtrls, UrickGL, U3Dpolys;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    Scene:TSceneGL;
  end;

var
  Form1: TForm1;
  rx,ry,rz:word;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  cube:Tentity;
  Face:TFace;
  light:Tlight;
begin
  Scene:=TSceneGL.create; // Создаем новую сцену
  Cube:=TEntity.create; // Создаем пустой объект TEntity
  Cube.SetColor(90,200,150); // Инициируем цвета R,G,B
  Face:=cube.addFace;
  // Создаем 1-й face в исходном кубе  всего 6 граней ( в кубе )
    Face.AddVertex(1.0, 1.0, 1.0,0.0, 0.0, 1.0);  // добавляем 1-й  vertex
    Face.AddVertex(-1.0, 1.0, 1.0,0.0, 0.0, 1.0); // добавляем 2-й  vertex
    Face.AddVertex(-1.0, -1.0, 1.0,0.0, 0.0, 1.0);// добавляем 3-й  vertex
    Face.AddVertex(1.0, -1.0, 1.0,0.0, 0.0, 1.0);// добавляем 4-й  vertex

  Face:=cube.addFace;
    Face.AddVertex(1.0, 1.0, -1.0,0.0, 0.0, -1.0);
    Face.AddVertex(1.0, -1.0, -1.0,0.0, 0.0, -1.0);
    Face.AddVertex(-1.0, -1.0, -1.0,0.0, 0.0, -1.0);
    Face.AddVertex(-1.0, 1.0, -1.0,0.0, 0.0, -1.0);

  Face:=cube.addFace;
    Face.AddVertex(-1.0, 1.0, 1.0,-1.0, 0.0, 0.0);
    Face.AddVertex(-1.0, 1.0, -1.0,-1.0, 0.0, 0.0);
    Face.AddVertex(-1.0, -1.0, -1.0,-1.0, 0.0, 0.0);
    Face.AddVertex(-1.0, -1.0, 1.0,-1.0, 0.0, 0.0);

  Face:=cube.addFace;
    Face.AddVertex(1.0, 1.0, 1.0,1.0, 0.0, 0.0);
    Face.AddVertex(1.0, -1.0, 1.0,1.0, 0.0, 0.0);
    Face.AddVertex(1.0, -1.0, -1.0,1.0, 0.0, 0.0);
    Face.AddVertex(1.0, 1.0, -1.0,1.0, 0.0, 0.0);

  Face:=cube.addFace;
    Face.AddVertex(-1.0, 1.0, -1.0,0.0, 1.0, 0.0);
    Face.AddVertex(-1.0, 1.0, 1.0,0.0, 1.0, 0.0);
    Face.AddVertex(1.0, 1.0, 1.0,0.0, 1.0, 0.0);
    Face.AddVertex(1.0, 1.0, -1.0,0.0, 1.0, 0.0);

  Face:=cube.addFace;
    Face.AddVertex(-1.0, -1.0, -1.0,0.0, -1.0, 0.0);
    Face.AddVertex(1.0, -1.0, -1.0,0.0, -1.0, 0.0);
    Face.AddVertex(1.0, -1.0, 1.0,0.0, -1.0, 0.0);
    Face.AddVertex(-1.0, -1.0, 1.0,0.0, -1.0, 0.0);

  with cube do
  begin
    move(0,0,-15); // Перемещаем куб в координаты x, y, z
    Rotate(-30,-30,-30); // и поворачиваем на угол
  end;

  Scene.Entities.add(cube);// добавим куб на сцену

  light:=Tlight.create(1); // создадим источник света и
  Scene.lights.add(light); // добавим его на сцену

  Scene.InitRC(panel1.handle); // передадим Handle Panel1 нашей сцене,
                               // на ней будет происходить рендеринг
  Scene.UpdateArea(panel1.width,panel1.height);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Scene.free; // очищаем сцену
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(rx,1); if rx>360 then rx:=0;
  inc(ry,2); if ry>360 then ry:=0;
  dec(rz,1); if rz<0 then rz:=360;
  Tentity(Scene.Entities.Items[0]).Rotate(rx,ry,rz); // повернем куб
  Scene.Redraw;                                 // ... и обновим сцену
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=Vk_Escape then close; // выход
end;

end.
Вопрос как добавить 6 текстур из файлов формата BMP на каждую грань?

Исходник
Зеркало

Последний раз редактировалось newStudent; 03.12.2010 в 00:58.
newStudent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
наложение текстур в OpenGL FJFray Мультимедиа в Delphi 1 23.10.2010 12:40
Координаты текстур куба. DirectX. Crivel Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.06.2010 12:45
Наложение нескольких текстур в OpenGL Krechet Мультимедиа в Delphi 4 06.05.2010 15:30
Delphi: Создание просмоторщика текстур с 3D моделью. milk333 Помощь студентам 0 26.01.2010 18:26