Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстуры 
:(
    Опции темы
Ares
Дата 9.6.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



Помогите пожалуйста!
Что означает следубщая строчка:
gluQuadricTexture(quadObj, GL_TRUE)?

P.S. Разрешаем текстуру куда, как, зачем?
PM MAIL   Вверх
p0s0l
Дата 9.6.2005, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Цитата(MSDN)
The gluQuadricTexture function specifies whether quadrics are to be textured.
...
The gluQuadricTexture function specifies whether texture coordinates are to be generated for quadrics rendered with quadObject.

The manner in which texture coordinates are generated depends upon the specific quadric rendered
Включает генерацию текстурных координат для объекта quadObj...

Добавлено @ 21:28
Цитата(Ares @ 9.6.2005, 20:37)
как
Зависит от конкретного объекта, на который натягиваешь текстуру.


--------------------
С уважением, г-н Посол.
PM   Вверх
Ares
Дата 10.6.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



![quote] Включает генерацию текстурных координат для объекта quadObj...
А зачем включает? Если можно задать вершину в ручную, а генерация занимает много ресурса, но ее же используют, то с какой же целью она нужна?
PM MAIL   Вверх
Ares
Дата 10.6.2005, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



Кто-нибудь может объяснить для чего эта функция? smile
PM MAIL   Вверх
p0s0l
Дата 10.6.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Пример:
Код

  quadObj = gluNewQuadric();

// цилиндр с текстурой
  gluQuadricTexture (quadObj, GL_TRUE);
  gluCylinder (quadObj, ...);

// диск без текстуры, вернее, с отключенной генерацией текстурных координат
  gluQuadricTexture (quadObj, GL_FALSE);
  gluDisk (quadObj, ...);

  gluDeleteQuadric (quadObj);

В этом примере, цилиндр текстурируется. Координаты вершин генерятся с помощью gluCylinder, нигде сам не задаешь координаты вручную...


--------------------
С уважением, г-н Посол.
PM   Вверх
Ares
Дата 10.6.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



[quote]Наложение текстур

Наложение текстур осуществляется много проще. Все, что нужно сделать, это выбрать текущую текстуру:

glBindTexture (GL_TEXTURE_2D, Texture [0]);

Но прежде, обязательно нужно включить наложение текстур:

glEnable (GL_TEXTURE_2D);

После этого, при рисовании вершин, нужно указывать координаты текстуры. Координата задается двумя переменными: x и y. При этом для вершин с коорди-натами текстуры 0,0 будет располагаться левый верхний угол текстуры, а в вер-шине с координатами 1,1 будет располагаться правый нижний угол.
В начале установите режим, благодаря которому при использовании коор-динат меньше 0 и больше 1 текстура будет размножаться.
Это выполняется с помощью функции

glTexCoord2f (GLfloat x, GLfloat y);

Разумеется, при использовании текстур можно полностью отказаться от ис-пользования цветов, убрав все вызовы glColor*
Вуаля, все что нужно уже выполнено. В результате у вас должно получиться код похожий на такой. А у некоторых, в силу некоторой лености, абсолютно та-кой. Ведь что может быть проще чем скопировать и вставить готовый код :о)

Добавлено @ 19:59
[После этого, при рисовании вершин, нужно указывать координаты текстуры. Координата задается двумя переменными: x и y.]
Координаты текстуры указываютя в ручную! А зачем автоматически их находить с помощью gluQuadricTexture(quadObj, GL_TRUE) smile
PM MAIL   Вверх
p0s0l
Дата 10.6.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Положим тебе нужно нарисовать сферу... Можно рассмотреть 2 способа...

1 способ:
Вычисляешь вручную координаты всех вершин сферы, у каждой вершины вычисляешь текстурные координаты, вобщем будет примерно так, как ты написал в своём последнем посту:
Код

for( ... ){
  glTexCoord2f( <координаты текстур, вычисленные вручную> );
  glVertex3f( <координаты вершины, вычисленные вручную> );
}
т.е. всю сферу ты строишь от начала до конца вручную...
В этом случае использовать gluQuadricTexture не надо, она ни на что влиять не будет!

2 способ:
Использовать gluSphere - пример я уже приводил.
Сферу от начала до конца строить тебе уже не надо, рассчитывать тоже ничего не надо... Указываешь радиус, количество делений - и сфера готова!
Координаты вершин рассчитываются автоматически, и если включена генерация текстурных координат для этого объекта, то они тоже будут генериться автоматически - для сферы одним способом, для цилиндра - другим и т.д.
В этом случае использовать gluQuadricTexture можно!

Разница понятна ?


Вообщем, если ты не используешь gluQuadric-объекты, т.е. сам вручную рисуешь объекты, то использовать, конечно же, функцию gluQuadricTexture не надо...



--------------------
С уважением, г-н Посол.
PM   Вверх
Ares
Дата 11.6.2005, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



Понятно!
А вот зачем использовать эту gluQuadricTexture, она же много ресурсов ест! Если дапустим мы будем накладывать текстуру на крылол птицы! Там только один такт будет занимать около 0.25 сек. Но она же все таки нужна, есть одна какя-то причина по чему мы используем gluQuadricTexture, а вот какая она я не знаю! Подскажи, а то меня преподаватель этим валит и валит! smile
PM MAIL   Вверх
p0s0l
Дата 11.6.2005, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Если рисуешь крыло птицы - тогда использовать gluQuadricTexture не надо!... Покажи код, где ты рисуешь крыло птицы и умудряешься всунуть туда gluQuadricTexture... smile У тебя даже в таком случае не будет никакого quadric-объекта, что ты будешь писать первым параметром в gluQuadricTexture ?
Если только ты не собрался рисовать крыло птицы цилиндрами и дисками smile

Цитата(Ares @ 11.6.2005, 08:39)
Но она же все таки нужна, есть одна какя-то причина по чему мы используем gluQuadricTexture, а вот какая она я не знаю!
Я уже говорил, в каком случае используется, даже выделил жирным шрифтом:
Цитата(p0s0l @ 10.6.2005, 21:28)
способ:
Использовать gluSphere - пример я уже приводил.
Сферу от начала до конца строить тебе уже не надо, рассчитывать тоже ничего не надо... Указываешь радиус, количество делений - и сфера готова!
Если ты собрался нарисовать диск, цилиндр или сферу - то можно использовать библиотеку GLU, которая позволяет строить эти примитивные объекты автоматически. В этом случае, ты можешь строить сферы, цилиндры и др., как с генерацией текстурных координат, так и без - для этого и только в этом с случае и используется gluQuadricTexture!... К рисованию крыла птицы она никакого отношения не имеет!

Скажи преподу, что при рисовании крыла птицы эта функция не используется, поэтому она никак и ничего тормозить не будет...





--------------------
С уважением, г-н Посол.
PM   Вверх
Ares
Дата 11.6.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2005

Репутация: нет
Всего: нет



Спасибо, огромное!
Хорошо так и передам smile !
PM MAIL   Вверх
atavinta
Дата 31.1.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 31.1.2008
Где: Москва

Репутация: нет
Всего: нет



Я пользуюсь DirectXом. В нём я не знаю аналога и все текстурные координаты задаю вручную. Но в принципе это большое удобство. Если же тебя интересует не удобство, а экономия, то делай сам все, что можешь сдлать лучше, чем уже зделано и грузи в готовом виде все, что сам сдлать не можешь или делаешь хуже. Если мне потребуется подобное удобство, то функцию генерации я напишу сам, а полученные текстурные координаты буду сохранять в файл. Потом эти текстурные координаты будут просто загружаться готовые. Загрузка и хранение занимают меньше ресурсов, чем генерация по запросу, в тоже время автогенерация удобнее полностью ручного режима. Один раз я уже написал такую функцию под конкретный объект, но сохранил в самом проекте. Функция вызывается при каждом запуске самой программы, но только по одному разу. Это позволяет считать автогенерацию просто частью подготовительного этапа наравне с загрузкой прилады и созданием окна. Но для более сложных объектов я с целью сокращения времени подготовительного этапа буду пользоваться файлами.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.