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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Буфер трафарета OpenGL 
:(
    Опции темы
GrizliK
Дата 4.5.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня вопрос как использовать буфер трафарета в общем.
Если можно дать какую нибудь рабочую прогу на vc++ 2005.
Пример со сферой и кубом не получился-там не расписана инициализация буфера.
PM MAIL   Вверх
baldina
Дата 4.5.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



stencil buffer может быть использован для совершенно разных задач, например формирования тени,  CSG.
http://www.opengl.org/resources/code/sampl...tes/node11.html
http://pmg.org.ru/nehe/nehe26.htm


PM MAIL   Вверх
GrizliK
Дата 4.5.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот есть код. У меня здесь буфер не врубается, фигуры рисуются поверх друг друга, неважно есть буфер или нет. может что с компом? видеокарта GeForce 6600GT

Код


glClearStencil(1);
    // Определяем, какие биты могут писаться в стенсил буфер
    glStencilMask(0xFF);
    // Очищаем все буферы
    glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    glBegin(GL_QUADS); // Рисуем градиентно-закрашенный квадрат
      glColor3f( 1,0,0);glVertex3f( 2.0f, 2.0f, -0.1f);
      glColor3f( 0,1,0);glVertex3f(-2.0f, 2.0f, -0.1f);
      glColor3f( 0,0,1);glVertex3f(-2.0f, -2.0f, -0.1f);
56


      glColor3f( 1,0,1);glVertex3f( 2.0f, -2.0f, -0.1f);
     glEnd();
     // Разрешаем проведение теста трафарета для треугольного "окна"
     glEnable(GL_STENCIL_TEST);
     // Определяем функцию и значение для сравнения,
     // треугольник не рисуется
     glStencilFunc(GL_NEVER, 2, 0);
     // Заменяем значение буфера трафарета на значение 2
     glStencilOp(GL_REPLACE, GL_KEEP, GL_KEEP);
     glBegin(GL_POLYGON); // Определяем область "окна"
       glVertex3f( 0.0f, 1.0f, 0.0f);
       glVertex3f( 1.0f, -1.0f, 0.0f);
       glVertex3f(-1.0f, -1.0f, 0.0f);
     glEnd();
     // Изменяем параметры теста буфера трафарета;
     // следующий объект будет рисоваться только в тех местах,
     // для которых значение в буфере трафарета не равно 2
    glStencilFunc(GL_NOTEQUAL, 2, 255);
    glColor3f(0.0f, 1.0f,0.0f); // Задаем зеленый цвет
    glBegin(GL_POLYGON); // Рисуем треугольник
      glVertex3f( 0.0f, 1.6f, 0.0f);
      glVertex3f(-1.4f, -1.4f, 0.0f);
      glVertex3f( 1.4f, -1.4f, 0.0f);
    glEnd();


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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