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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 03:00   #11
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Суть в том, что если используешь цветные фигуры(glColor3f), то нужно вырубать текстуры(glDisable(GL_TEXTURE_2D)) и всё, что с ними связано, в частности glTexCoord2d(). А если используешь текстурные фигуры, то нужно включить текстуры(glEnable(GL_TEXTURE_2D)), ну а цвет(glColor3f) при включённых текстурах практически ни на что не влияет.
В процедуре FormPaint начало будет такое:
Код:
procedure TForm2.WMPaint(var Msg: TWMPaint);
var
  ps : TPaintStruct;
  col:boolean;
begin
 col:=false; // считаем что цвет выключен
  if form1.RadioGroup1.ItemIndex = 1 then col:=true; // выбрали цвет, а не текстуры
  if col then // если выбрали цвет, то
  begin
   glDisable(GL_TEXTURE_2D);// вЫключаем текстуры
   glcolor3f(Form1.R, Form1.G, Form1.B);// назначаем цвет для наших объектов
  end
  else // иначе включаем текстуры
   glEnable(GL_TEXTURE_2D);

// ДАЛЬШЕ ТВОЙ КОД ПОЧТИ БЕЗ ИЗМЕНЕНИЙ
 If form1.RadioButton4.Checked = true
  then
   begin
  BeginPaint(Handle, ps);
.................
..................
..................
Так же не забудь перед каждым glTexCoord2d() поставить if not col then.
Выглядеть будет так:
Код:
if not col then glTexCoord2d(zn1,zn2);
Ну и по мелочи)))
Код:

procedure TForm1.ListBox2Click(Sender: TObject);
begin
case ListBox2.ItemIndex of
    0:begin
      R:=1;
      G:=0;
      B:=0;
      BitBtn1.Enabled:=True;
    end;
    1:begin
      R:=0;
      G:=0;
      B:=1;
      BitBtn1.Enabled:=True;
    end;
    2:begin
      R:=0;
      G:=1;
      B:=0;
      BitBtn1.Enabled:=True;
    end;
    3:begin
      R:=1;
      G:=1;
      B:=0;
      BitBtn1.Enabled:=True;
    end;
    4:begin
      R:=0.8;
      G:=0.8;
      B:=0.8;
      BitBtn1.Enabled:=True;
    end;
    5:begin
      R:=1;
      G:=0;
      B:=1;
      BitBtn1.Enabled:=True;
    end;
    6:begin
      R:=1;
      G:=1;
      B:=1;
      BitBtn1.Enabled:=True;
    end;
     end;
end;
Удачи на сдаче))!
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 16.03.2012 в 05:26.
Rin вне форума Ответить с цитированием
Старый 05.04.2012, 13:10   #12
DooMik
 
Регистрация: 30.01.2011
Сообщений: 8
По умолчанию

Rin, ещё раз здравствуйте... у меня к Вам есть ещё один вопрос если не откажете буду благодарен, мне дали последнее задание по диплому и сказали выполнить и на этом закончить программу.... но я уже в этом оформлении диплома так запарился что уже просто даже думать сложно... не могли бы Вы мне помочь... суть дела: "Нужно осуществить смену фигур..." т.е. как делалась смена текстур, только теперь вместе со сменой текстур нужно изменить ещё и саму фигуру... и т.к. у меня есть текстурированные объекты и просто цветные то, для текстурированных нужно смена фигуры+смена текстуры , а для цветных просто смена фигуры... смена фигур пусть будет в любом порядке, это не приоритет.. Спасибо, Файл прикрепил... CheckBox5 будет отвечать за смену.
Вложения
Тип файла: rar Diplom.rar (3.40 Мб, 10 просмотров)
DooMik вне форума Ответить с цитированием
Старый 05.04.2012, 14:05   #13
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Прикрутите глобальную переменную,(или 2 переменные: одна для текстурированных, другая для цветных) которой будете присваивать цифры от 1 до 6,
в зависимости от того, какой radiobutton выбрали, а в процедуре отрисовки вместо
if radiobutton1.checked then пишите if *ваша_переменная*=1 then. Лучше опять таки использовать оператор case.
Теперь, если нужна будет смена объектов, то через какой-то промежуток времени увеличивайте вашу переменную на 1, если она равна 7, то присваивайте ей 1. Вот и всё.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разная текстура для каждой грани куба OpenGL DIgorevich Мультимедиа в Delphi 4 16.12.2011 12:17
Красивая текстура ZvEr_HaCkEr Свободное общение 4 05.01.2011 10:20
Текстура на 2D объект OpenGL saggy Мультимедиа в Delphi 0 30.06.2010 13:52
Прозрачная текстура Miha85193 Мультимедиа в Delphi 1 01.04.2010 20:59
Прозрачная текстура Miha85193 Компоненты Delphi 0 29.03.2010 12:34