HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Получение текстуры
в tri.cpp
Страницы (3): « 1 [2] 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Вместо нагороженной кучи кода, как оказалось, можно сделать совсем по-другому.

C++ Source Code:
glBindTexture(GL_TEXTURE_2D,tex[i].index);
glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,(ScreenWidth-XRES(400))/2,(ScreenHeight-YRES(300))/2,400,300,0);

Но остался последний вопрос. Я хочу, чтобы кусок из вида брался точно по середине, а сейчас он сполз куда-то вниз по оси у. Как сделать его точно по центру?
или это может зависить от наложения юв-координат на прицеле винтовки? там они не по центру, а где-то в правом верхнем углу болтаются.

Добавлено 24-11-2013 в 06:35:

Прикладываю картинку в качестве объяснения предыдущей проблемы.

Добавлено 24-11-2013 в 06:57:

и всё равно с винтовкой фпс у меня падает до 15-20, при 60-70 нормальных.

[ Вложение ]
scirifle.jpg

Отредактировано domded 24-11-2013 в 02:43

Сообщить модератору | IP: Записан
Сообщение: 128125

Старое сообщение 24-11-2013 02:57
- За что?
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 34

Рейтинг



Цитата:
domded писал:
и всё равно с винтовкой фпс у меня падает до 15-20, при 60-70 нормальных.

Попробуй через http://www.opengl.org/sdk/docs/man/...SubImage2D.xml, или через FBO но он вроде не шибко быстрее, если скейлишь через gluScaleImage , то у меня для тебя плохие новости, он садит фпс. (=

Сообщить модератору | IP: Записан
Сообщение: 128129

Старое сообщение 24-11-2013 09:15
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33152
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
domded писал:
и всё равно с винтовкой фпс у меня падает до 15-20, при 60-70 нормальных.

я вообще удивляюсь, что у тебя FPS, а не SPF, ибо ты допустил все возможные ошибки, какие только можно было допустить.
Во первых зачем тебе реад пиксельс, во вторых, зачем тебе доп. проход, если можно просто вырезать кусочек с экрана до того, как нарисована пушка (это легко отловить при начале отрисовки пушки с эвентом STUDIO_RENDER), в третьих зачем тебе glScaleImage, в четвертых зачем каждый кадр искать эту чортову текстуру заново, в пятых зачем ты юзаешь текс имидж, если надо юзать текс саб имидж. Т.е. можно продолжать до бесконечности. Да ерунда это полная с винтовкой, потому что она у тебя должна работать как зеркало, т.е. отражать то что за твоей спиной, а не то, что в линзу видно. Ты сам подержи винтовку так, как на скрине и убедись, что в прицел при таком положении не видно ничего.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 128133

Старое сообщение 24-11-2013 13:38
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 128137

Старое сообщение 24-11-2013 14:12
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Кта не нулловый? А когда у тебя пушки в руках нету чем равен viewent->model? Да ничему.



Я тебя обрадую: в ХЛ gEngfuncs.GetViewModel() всегда ненулловый. Если поглядишь хлсдк - там дажн проверок нет.
Кстати, viewent - это энтитя, на которую тебе сделали SET_VIEW.

Короч, мимо проходил просто.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | IP: Записан
Сообщение: 128223

Старое сообщение 25-11-2013 09:58
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35208
Нанёс повреждений: 515 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


Цитата:
domded писал:
знал бы, как это сделать - не пришёл сюда.

Ну да, мы тут как учителя младших классов. Научим, вымотаем свои нервы, отправим в среднюю школу - и потом про нас никто не вспомнит.

Сообщить модератору | IP: Записан
Сообщение: 128226

Старое сообщение 25-11-2013 10:12
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33152
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
~ X ~ писал:
Я тебя обрадую: в ХЛ gEngfuncs.GetViewModel() всегда ненулловый

Да причём тут viewent? У нее есть модель и эта модель может быть равна нулю.
C++ Source Code:
1
cl_entity_t *ent = gEngfuncs.GetViewModel();
2
 
3
if( ent->model )
4
{
5
}

Понятно ли тебе, что делает этот код?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 128236

Старое сообщение 25-11-2013 11:22
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Я вообще собирался тутор по инвентарю писать и выложить все свои наработки сюда. Ибо пилю не мод, а просто хочу разобраться "как это работает". Или я похож на дебила, который хочет сделать римейк коф?
дядя миша, я тоже в тесте поучаствую. этот код получает вьюентити, а затем проверяет, ent->model!=NULL?

Отредактировано domded 25-11-2013 в 11:55

Сообщить модератору | IP: Записан
Сообщение: 128242

Старое сообщение 25-11-2013 11:49
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35208
Нанёс повреждений: 515 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


Цитата:
domded писал:
Или я похож на дебила, который хочет сделать римейк коф?

Откуда мы знаем, на кого ты похож?
Выложи фотку - поглядим.
Или хотя бы аватарку поставь.

Сообщить модератору | IP: Записан
Сообщение: 128243

Старое сообщение 25-11-2013 11:52
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



упдатировал свой код. теперь он выглядит так:

C++ Source Code:
1
//are we processing viewmodel?
2
if (m_pCurrentEntity == gEngfuncs.GetViewModel() )
3
{
4
  mstudiotexture_t*tex = (mstudiotexture_t*)((byte*)m_pStudioHeader+m_pStudioHeader->textureindex);
5
  for (int i = 0; i < m_pStudioHeader->numtextures; i++ )
6
  {
7
    if (!stricmp("cam_vfind.bmp",tex[i].name))
8
    {
9
      if (glIsTexture(tex[i].index))
10
      {
11
        glBindTexture(GL_TEXTURE_2D,tex[i].index);
12
        glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,(ScreenWidth-XRES(400))/2,(ScreenHeight-YRES(300))/2,400,YRES(300),0);
13
 
14
      }
15
 
16
    }
17
  }
18
  delete[] tex;
19
 
20
}

Опять тормоза жуткие, 20 fps.
И поставил аватарку специально по просьбе ксерокса.
Я не понимаю, как поствить туда текссабимадж. Он требует пиксельную дату экрана. Буду разбираться сейчас.

Отредактировано domded 25-11-2013 в 12:21

Сообщить модератору | IP: Записан
Сообщение: 128246

Старое сообщение 25-11-2013 12:13
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33152
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
domded писал:
delete[] tex;

Ну вот что ты делаешь, а? Что ты там удаляешь? Ты его выделял, чтоб удалять?
И сразу после glCopyTexImage2D ставь break;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 128251

Старое сообщение 25-11-2013 12:35
-
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 34

Рейтинг



Цитата:
domded писал:
Я не понимаю, как поствить туда текссабимадж

Потому что тебе надо не glTexSubImage2d, а glCopyTexSubImage2d.И как Дядь Миша уже писал, на кой хрен ты каждый кадр ищешь текстуру?

Сообщить модератору | IP: Записан
Сообщение: 128255

Старое сообщение 25-11-2013 13:03
- За что?
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Всё равно не получается никакого выигрыша в производительности. Я так понимаю, что glCopyTexSubImage2D требует glTexImage2D, об этом даже в справочнике по огл написано.
Как понять - зачем? Индекс у текстуры разный на разных моделях, поэтому естественно, что приходится искать её в списке текстур модели. Конечно, можно завести глобальную прееменную, но выигрыш от этого мне кажется сомнительным. Я не могу найти в студиомодельрендерере место, где рисуются текстуры, поэтому приходится искать в рендерфайнал.
И ещё, можно ли как-то получить размеры и позицию юв-мапы относительно оригинальной текстуры? Из-за того, что юв-мапа приклеена не по центру, у меня получается, что берётся не та часть картинки, которую хочу.

Сообщить модератору | IP: Записан
Сообщение: 128274

Старое сообщение 25-11-2013 21:49
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35208
Нанёс повреждений: 515 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


Цитата:
domded писал:
Я так понимаю, что glCopyTexSubImage2D требует glTexImage2D

В каком смысле - требует?

Сообщить модератору | IP: Записан
Сообщение: 128277

Старое сообщение 25-11-2013 23:19
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Всё, я жёстко протупил.
В теле получился такой код

C++ Source Code:
1
glBindTexture(GL_TEXTURE_2D, tex[i].index);
2
glBindTexture(GL_TEXTURE_2D, tex[i].index);			glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,XRES(tex[i].width),YRES(tex[i].height),0,GL_RGB,GL_UNSIGNED_BYTE,NULL);
3
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));
4
break;

Требует - без неё копутекссабимадж не работает. Проверял.
В итоге всё равно получаю падение фпс в два раза.

Отредактировано domded 25-11-2013 в 23:45

Сообщить модератору | IP: Записан
Сообщение: 128278

Старое сообщение 25-11-2013 23:32
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 06:11. Новая тема    Ответить
Страницы (3): « 1 [2] 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Получение текстуры
в tri.cpp
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024