HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Получение текстуры (https://hlfx.ru/forum/showthread.php?threadid=4180)
Отправлено XaeroX 25-11-2013 в 23:40:
Цитата:
domded писал:
Требует - без неё копутекссабимадж не работает
Требует один раз, а не каждый кадр.
Отправлено domded 26-11-2013 в 00:19:
Заключил создание текстуры под проверку ошибки. Всё равно тормоза, хотя teximage2d каждый кадр уже не вызывается.
Ещё странность: У меня glGetError никогда не равно GL_INVALID_OPERATION. приходится просто проверять на правду.
Отправлено XaeroX 26-11-2013 в 00:24:
domded
Значит, теперь каждый кадр вызывается что-то другое, только и всего.
А вообще, если copytexsubimage не даёт прироста, значит, проблема вообще в другом месте.
Отправлено domded 26-11-2013 в 00:28:
оно каждый кадр и вызывается. ну, ещё проход по списку текстур модели с целью найти нужную.
C++ Source Code:
1 | if (m_pCurrentEntity == gEngfuncs.GetViewModel() ) |
3 | mstudiotexture_t*tex = (mstudiotexture_t*)((byte*)m_pStudioHeader+m_pStudioHeader->textureindex); |
4 | for (int i = 0; i < m_pStudioHeader->numtextures; i++ ) |
6 | if (!stricmp("cam_vfind.bmp",tex[i].name)) |
8 | //creating current image of screen |
9 | if (glIsTexture(tex[i].index)) |
12 | glBindTexture(GL_TEXTURE_2D, tex[i].index); |
14 | glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,(ScreenWidth-XRES(tex[i].width))/4,ScreenHeight-YRES(tex[i].height),XRES(tex[i].width),YRES(tex[i].height)); |
18 | glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,XRES(tex[i].width),YRES(tex[i].height),0,GL_RGB,GL_UNSIGNED_BYTE,NULL); |
Отправлено XaeroX 26-11-2013 в 00:54:
1) Зачем вызов glIsTexture?
2) Ты уверен, что glGetError не возвращает какой-нибудь предыдущий еррор?
3) До каких пор в конце будет стоять "delete[] tex"?
Отправлено domded 26-11-2013 в 01:03:
Потому что дядя миша говорил, что когда-то оно есть просто индекс на массив пикеселей. Сейчас убрал проверку, почистил ненужное удаление указателя. Всё работает, но проблема осталась. Причём в разрешении 640х480 падает до 30, а в 1024х768 - до 10. Я, в принципе, понимаю, почему - картинка увеличивается, но glTexImage2D по-прежнему вызывается один раз.
Уверен. Не может этого быть, потому что код ошибки в sprintf %i - 12***, что соответствует именно GL_INVALID_OPERATION. Но почему-то он упорно не хочет равнять их.
Отправлено Дядя Миша 26-11-2013 в 16:11:
domded ты хоть скажи конфигурацию своего компьютера. А то сейчас окажется, что у тебя RivaTNT.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено domded 26-11-2013 в 19:33:
Радеон 9600 128 мб, 1 гиг оперативки.
УПД: кстати, ваш ксаш-движок на карте с мониторами или проектором тоже выдаёт мне около 5 фпс. когда мониторов два - он вообще работает со скоростью один кадр в пять-десять секунд.
Отправлено Дядя Миша 26-11-2013 в 19:51:
Гы-гы. Ну я почему-то так и думал.
C++ Source Code:
1 | bool m_bGrabScreen = false; |
3 | void HUD_VidInit( void ) |
8 | if (m_pCurrentEntity == gEngfuncs.GetViewModel() ) |
10 | mstudiotexture_t*tex = (mstudiotexture_t*)((byte*)m_pStudioHeader+m_pStudioHeader->textureindex); |
12 | for (int i = 0; i < m_pStudioHeader->numtextures; i++ ) |
14 | if (!stricmp("cam_vfind.bmp",tex[ i ].name)) |
16 | glBindTexture(GL_TEXTURE_2D, tex[ i ].index); |
20 | glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,XRES(tex[ i ].width),YRES(tex[ i ].height),0,GL_RGB,GL_UNSIGNED_BYTE,NULL); |
25 | glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,(ScreenWidth-XRES(tex[ i ].width))/4,ScreenHeight-YRES(tex[ i ].height),XRES(tex[ i ].width),YRES(tex[ i ].height)); |
Хотя моё мнение, что glTexImage там вообще не нужен, поскольку текстура уже была создана еще движком.
Добавлено 26-11-2013 в 23:51:
Цитата:
domded писал:
кстати, ваш ксаш-движок на карте с мониторами или проектором тоже выдаёт мне около 5 фпс
Ну не обманывай, нету в ксаш-движке никаких мониторов 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено domded 26-11-2013 в 19:55:
Неправильно выразился. В демокарте ксаш-хт.
У меня проблема в том, я так понял, что видюха очень древняя?
Отправлено Дядя Миша 26-11-2013 в 20:00:
Нет, видюха вполне норм. На её старшем брате Radeon9800 я сталкера проходил. У тебя скорее оч. слабый процессор, просто ужас какой слабый.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено domded 26-11-2013 в 20:06:
Странно. Процессор у меня пентиум 4 2.8 ггц . Но почему-то тот же многострадальный коф с его рендером у меня жутко тормозит. Оригинальную параною смотел очень давно, поэтому про неё ничего не помню.
А насчёт glTexImage - я вызываю его потому что без него не работает glCopyTexSubImage.
В любом случае - благодарю вас и ксерокса за помощь.
Отправлено Дядя Миша 26-11-2013 в 20:28:
Цитата:
domded писал:
Процессор у меня пентиум 4 2.8 ггц
Ну вот и ответ на твой вопрос. Пентиум4 - это воздушные мегагерцы.
Там почти 70% процентов времени занимают промахи кэша, из-за чего какой-нибудь пентиум3 866 мегагерц сплошь и рядом оказуется шустрее.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'