Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.04.2012, 17:48
Аватар для Gravitas
Gravitas Gravitas вне форума
Новичок
 
Регистрация: 12.06.2011
Сообщения: 61
Версия Delphi: 7
Репутация: 38
Вопрос OpenGL Вырезание окна

Средствами OpenGL сделал простенькую комнату и наложил текстуры. Возникла потребность создать небольшое прямоугольное отверстие в "стене". Поискав, наткнулся на отсечение, но в данном случае оно не подходит. Как еще можно попробовать?
__________________
Gravitas
Ответить с цитированием
  #2  
Старый 17.04.2012, 18:23
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Gravitas
Средствами OpenGL сделал простенькую комнату и наложил текстуры. Возникла потребность создать небольшое прямоугольное отверстие в "стене". Поискав, наткнулся на отсечение, но в данном случае оно не подходит. Как еще можно попробовать?
Смешивание каналов или используй буфер трафарета..
Ответить с цитированием
  #3  
Старый 17.04.2012, 19:28
Аватар для Gravitas
Gravitas Gravitas вне форума
Новичок
 
Регистрация: 12.06.2011
Сообщения: 61
Версия Delphi: 7
Репутация: 38
По умолчанию

Код:
// Тут предварительные вычисления и др
	
// прорисовка "дырявой" стены  (!!!)
	glEnable(GL_STENCIL_TEST);
	glStencilFunc(GL_ALWAYS, 1, 0);
	glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex3f(-2, 0, 2);
		glTexCoord2f(0, 1); glVertex3f(-2, 2, 2);
		glTexCoord2f(1, 1); glVertex3f(2, 2, 2);
		glTexCoord2f(1, 0); glVertex3f(2, 0, 2);
	glEnd();
	glStencilFunc(GL_ALWAYS, 2, 0);
	glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex3f(-1, 0, 2);
		glTexCoord2f(0, 1); glVertex3f(-1, 1, 2);
		glTexCoord2f(1, 1); glVertex3f(1, 1, 2);
		glTexCoord2f(1, 0); glVertex3f(1, 0, 2);
	glEnd();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glStencilFunc(GL_EQUAL, 1, 255);
	glColor3f(0.0f, 1.0f, 0.0f);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex3f(-2, 0, 2);
		glTexCoord2f(0, 1); glVertex3f(-2, 2, 2);
		glTexCoord2f(1, 1); glVertex3f(2, 2, 2);
		glTexCoord2f(1, 0); glVertex3f(2, 0, 2);
	glEnd();
	glDisable(GL_STENCIL_TEST);
// остальные стены и пол
glColor3f(0.0f, 0.0f, 1.0f);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex3f(2, 0, 2);
		glTexCoord2f(0, 1); glVertex3f(2, 2, 2);
		glTexCoord2f(1, 1); glVertex3f(2, 2, -2);
		glTexCoord2f(1, 0); glVertex3f(2, 0, -2);
	glEnd();
...
При таком раскладе появляется моргание при прорисовке. Нужный кусок стены хоть и становится прозрачным, но частично и не всегда.
__________________
Gravitas

Последний раз редактировалось Gravitas, 17.04.2012 в 19:34.
Ответить с цитированием
  #4  
Старый 17.04.2012, 19:34
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

скинь весь проект, время будет поковыряюсь..
Ответить с цитированием
  #5  
Старый 17.04.2012, 19:40
Аватар для Gravitas
Gravitas Gravitas вне форума
Новичок
 
Регистрация: 12.06.2011
Сообщения: 61
Версия Delphi: 7
Репутация: 38
По умолчанию

Проект на С++. Просто на другом форуме регаться с моим интернетом очень утомительно, а OpenGL в этом случае и там и сям одинаков.
__________________
Gravitas
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter