Barnes
1972 постов
Карма: 153
#11 03 декабря 2009 в 15:38
я не рублю в движке ку1 но про анизотропию скажу.<br />просто в хедере напиши<br /><br />#ifndef GL_EXT_texture_filter_anisotropic<br />#define GL_TEXTURE_MAX_ANISOTROPY_EXT&nbsp; &nbsp; 0x84FE<br />#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF<br />#endif<br /><br />первое устанавливает количество семплов анизотропии (ставим в gl_upload32) <br /><br />qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, r_anisotropic-&gt;value);<br /><br />а при помощи второго можно получить максимальное значение выборки<br />int max_aniso;<br />qglGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &amp;max_aniso);
Какой богатый внутренний мир! Дай-ка посмотрю.....
jeank
43 постов
Карма: 4
#12 03 декабря 2009 в 17:25
Большое спасибо, сейчас буду пробовать&nbsp; 8)
jeank
43 постов
Карма: 4
#13 03 декабря 2009 в 18:25
Огромнейшее спасибо, всё работает!!!!!<br /><br />прописал в glquake.h, как вы написали, только в gl_upload32 вывел этот вызов только для mipmap уровней&nbsp; if (mipmap), иначе вместо меню был ровный белый фон, а старое, без mipmap, так и осталось: <br /><br /> &nbsp; if (mipmap)<br /> &nbsp; {<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 8);<br /> &nbsp; //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min);<br /> &nbsp; //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);<br /> &nbsp; }<br /> &nbsp; else<br /> &nbsp; {<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max);<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);<br /> &nbsp; }<br /><br /><br />Надеюсь, так будет правильно? Статику я потом, конечно, уберу, это наспех для пробы поставил....
Barnes
1972 постов
Карма: 153
#14 03 декабря 2009 в 18:46
закоментил ты напрасно, тк это надстройка над би-триленейной фильтрацией<br /><br />if (mipmap)<br /> &nbsp; {<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 8);<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min);<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);<br /> &nbsp; }<br /> &nbsp; else<br /> &nbsp; {<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max);<br /> &nbsp; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);<br /> &nbsp; }
Какой богатый внутренний мир! Дай-ка посмотрю.....
jeank
43 постов
Карма: 4
#15 03 декабря 2009 в 20:41
Понял, исправил, полез добавлять в меню. Спасибо большое.<br />Получается, ничего в коде для настроек фильтрации менять и не надо, достаточно просто ползунок влепить, меняющий aniso до max_aniso...<br /><br />А насчет инициализации переменных разрешения и глубины цвета, то в крайнем случае, можно пойти топорным путем, и просто добавить код, который прочешет конфиги на предмет строчек разрешения, но хотелось бы по-правильному...<br /><br />В общем, на повестке дня остаются только два вопроса - смена разрешения (хотя бы при перезапуске, менять как в q2 будет очень муторно, я заглянул как там и уже выпал в осадок), и эта слегка подзадолбавшая лава.... :)
jeank
43 постов
Карма: 4
#16 04 декабря 2009 в 18:24
Победил я изменение разрешения, правда самым топорным способом - принудительно гружу их из активного конфига через fopen / fscanf и пересохраняю...<br /><br />Остается проблема с лавов..... плииииз, если кто знает, как это победить, буду очень благодарен!!!
jeank
43 постов
Карма: 4
#17 05 декабря 2009 в 21:24
Победил лаву - решение, оказывается, двойное есть....<br /><br />Либо в R_RecursiveWorldNode отрисовывать невидимую область, либо в обработке текстур ставить ловушку типа все текстуры с именем на &quot;*lava&quot; делать непрозрачными.<br /><br />Первое вроде правильное, второе вроде как через жопу... Что делать, в меню выбор давать?<br /><br />Да, и еще - у поверхности лавы пустой указатель на texturechains - может так влепить непрозрачность?
QuakeZombie
133 постов
Карма: 18
#18 06 декабря 2009 в 08:33
хм а может сделать в настроках/консоли &quot;регулятор прозраности&quot; и если она нулевая,то лава тупо не прозраная,и за ней ниего не прорисовывается
Barnes
1972 постов
Карма: 153
#19 06 декабря 2009 в 08:57
У меня на лаву ловушка, тк я рендерю параллакс сурф с вертекс освещением<br /><br />void R_RenderBrushPoly (msurface_t *fa)<br />{<br /> int maps;<br /> image_t *image;<br /> qboolean is_dynamic = false;<br /> char *purename;<br /> char noext[MAX_QPATH];<br /> <br /> image = R_TextureAnimation(fa-&gt;texinfo);<br /> purename = COM_SkipPath(image-&gt;name);<br /> COM_StripExtension(purename, noext);<br /><br /> c_brush_polys++;<br /><br /> image = R_TextureAnimation (fa-&gt;texinfo);<br /><br /> if (fa-&gt;flags &amp; SURF_DRAWTURB)<br /> { <br /> GL_Bind( image-&gt;texnum );<br /><br /> // warp texture, no lightmaps<br /> GL_TexEnv( GL_MODULATE );<br /> qglColor4f( gl_state.inverse_intensity, <br /> &nbsp; &nbsp; &nbsp; &nbsp; gl_state.inverse_intensity,<br /> gl_state.inverse_intensity,<br /> 1.0F );<br /> <br /> if (!strcmp(noext, &quot;brlava&quot;) &amp;&amp; gl_state.arb_fragment_program)<br /> RenderLavaSurfaces(fa);<br /> else<br /> EmitWaterPolys(fa);<br /><br /> GL_TexEnv( GL_REPLACE );<br /><br /> return;<br /><br /> }<br /> else<br /> {<br /> GL_Bind( image-&gt;texnum );<br /><br /> GL_TexEnv( GL_REPLACE );<br /> }
Какой богатый внутренний мир! Дай-ка посмотрю.....
jeank
43 постов
Карма: 4
#20 06 декабря 2009 в 10:52
Кстати, у меня чудеса с таким методом происходят.<br /><br />Когда я поставил на входе в EmitWaterPolysReflection (msurface_t *fa)&nbsp; (она тоже влияет на глюки лавы) вот такую ловушку:<br /><br />if (_strnicmp(fa-&gt;texinfo-&gt;texture-&gt;name,&quot;*lava&quot;,5))<br /> Con_Printf(&amp;fa-&gt;texinfo-&gt;texture-&gt;name);<br /><br />Мне в консоль тупо ничего не вывело. Закомментил if и мне вывело *lava001 *lava001 и так далее.<br /><br />А вот не лаву выводит &quot;на ура&quot;&nbsp; - и текстуры черепов, и воды, все что с * начинается, всё выводит.<br />Что вообще происходит - не понимаю... Может там пока обрабатывается строка, уже десять раз значение ячейки памяти меняется?