- 1
- 2
- 3
- 4
- 5
inline float _read_zbuf(int x, int y){
float v;
glReadPixels(x,screen.height-y+1,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&v);
return v;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+169
inline float _read_zbuf(int x, int y){
float v;
glReadPixels(x,screen.height-y+1,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&v);
return v;
}
>Для определения жизни под мышкой решил использовать изменение значений в буфере глубины, но glGetPixels уронил мне фпс на 300, и это один вызов финальной проверки, а что будет когда объекты проверятся начнут подумать страшно.
Неужели все так плохо ???
http://www.gamedev.ru/code/forum/?id=151921
CPPGovno 03.09.2011 16:49 # +1
Традиционно видеокарты рендерят сцену параллельно с процессором. Процессор готовит данные на несколько кадров вперёд, а видяха судорожно рисует в это время.
А тут чел один пиксель решил после рендеринга прочитать.
Проц, естественно, теперь ожидает окончания рендеринга текущего кадра, вместо того, чтобы готовит данные для следующих кадров.
И это при том, что пока видяха не предназначена для обратной пересылки данных от неё в RAM или CPU. Тк обычно ей приходится отправлять только на VGA выход и такое применение пока не предусмотрено.
Естественно, чтение из видеопамяти, CPU'шкой происходит без кеширования.
Esper 03.09.2011 18:46 # +1
Если бы доступ процессора в видеопамять происходил кэшируемо, то нужен бы был протокол поддержки согласованности кэшей процессора с видеопамятью, а это - танцы с присиданиями, которые кушают пропускную способность шины, на которой сидит видюха, и замедляют ее доступ в видеопамять. Также если бы таковой протокол был поддержан, то данные в кэшах процессора оказались бы полезны только если "кадр" лёг по старым адресам и старые данные не были перезаписаны видюхой. В противном (и наиболее вероятном) случае - промах по кэшу и сбор latency от CPU до видеопамяти. Кэширование тут бесполезно.
А код - пример закручивания гвоздей отверткой.
CPPGovno 03.09.2011 19:45 # 0
Lure Of Chaos 03.09.2011 20:28 # 0
CPPGovno 03.09.2011 22:10 # +5
jokz 04.09.2011 23:50 # +5
ctm 05.09.2011 06:48 # +1
что я делаю неправильно?((
absolut 05.09.2011 10:31 # +2
SmackMyBitchUp 05.09.2011 12:13 # +2
jokz 05.09.2011 13:59 # +1
CPPGovno 05.09.2011 22:30 # +1
CPPGovno 05.09.2011 22:31 # 0
И как? Разумная?
Lure Of Chaos 07.09.2011 15:30 # +2
Lure Of Chaos 05.09.2011 12:24 # +1
roman-kashitsyn 05.09.2011 12:54 # +4
CPPGovno 29.09.2011 23:54 # 0
carsten 01.10.2011 23:58 # 0
guest8 09.04.2019 11:27 # −999