k-sys
1 постов
Карма: 1
#1 15 ноября 2010 в 12:59
Здравствуйте, уважаемые квакеры! я уже давно сижу на этом форуме, но вот только ейчас решил зарегиться. я души не чаю в ку2, но в технической части ещё плоховато разбираюсь. но поэтому я здесь. в данный момент я и ещё несколько человек задумались над созданием игры на двиге ку2,задумка серьёзная, но людей, как обычно не хватает. я пока только начал изучать программирование (но исходники прочитал уже давно) и мне нужна помощь знающих людей, которые помогут мне разобраться в коде и предложат решения в трудных (а порой и не очень) ситуациях. хотелось бы заодно перенять опыт, так сказать)<br /><br />за основу мы взяли 3.23, там уже есть некоторые простые изменения, но при этом не сильно изменен рендерер и проч. я не ставлю целью сделать очень крутую графику как в q2xp или bers@q2, но, естественно, некоторые улучшения произвести всё же нужно. первое что я попытался сделать, это включить tga текстуры, это выглядело самым простым. банально заменив в glmodel.c <br />
if (next &gt; 0)<br /> out-&gt;next = loadmodel-&gt;texinfo + next;<br /> else<br /> &nbsp; &nbsp; out-&gt;next = NULL;<br /> Com_sprintf (name, sizeof(name), &quot;textures/%s.wal&quot;, in-&gt;texture);
<br />на<br />
if (next &gt; 0)<br /> out-&gt;next = loadmodel-&gt;texinfo + next;<br /> else<br /> &nbsp; &nbsp; out-&gt;next = NULL;<br /> Com_sprintf (name, sizeof(name), &quot;textures/%s.tga&quot;, in-&gt;texture);
<br />текстуры подключились, но при этом в игре не масштабировались, а рисовались в реальном размере.&nbsp; :-<br />текстуры подключились, но при этом в игре не масштабировались, а рисовались в реальном размере.&nbsp; :-[<br />подскажите пожалуйста, как правильно прикрутить 24-32 битные текстуры?
Берсеркер
2326 постов
Карма: 218
#2 15 ноября 2010 в 18:18
Здравствуй k-sys.<br /><br />Советую почаще заглядывать в сурсы движков, которые уже умеют это.&nbsp; ;)<br />Смотрим в q2bers функцию Mod_LoadTexinfo:<br />
if (next &gt; 0)<br /> out-&gt;next = loadmodel-&gt;texinfo + next;<br /> else<br /> &nbsp; &nbsp; out-&gt;next = NULL;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<br /> Com_sprintf (name, sizeof(name), &quot;textures/%s&quot;, in-&gt;texture); /// Berserker: грузим любую графику, а не только WAL<br /> out-&gt;image = GL_FindImage (name, it_wall, false, 0, false, 3);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<br /> if (out-&gt;image-&gt;filetype != file_wal)<br /> out-&gt;flags |= SURF_NEWTEX;
<br /><br />флаг SURF_NEWTEX - признак того, что текстура новая и требуется пересчёт текстурных координат.<br />Далее копай GL_BuildPolygonFromSurface, где новые текстуры масштабируются.<br />Короткое пояснение: если текстура из textures/e1u2/ (например), то берётся инфа о размерах старой текстуры, чтоб вычислить масштаб новой. См. код, думаю разберешся&nbsp; ;D<br /><br />
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Barnes
1979 постов
Карма: 153
#3 16 ноября 2010 в 10:06
текстуры подключились, но при этом в игре не масштабировались, а рисовались в реальном размере.&nbsp; <br />подскажите пожалуйста, как правильно прикрутить 24-32 битные текстуры?
<br />Смасштабировать загружемую текстуру очень просто.<br />Надо считать размер ориг wal текстуры и применить его на хайрез<br /><br />Mod_LoadTexinfo<br />--------------<br /><br />&nbsp; for (i = 0; i &lt; count; i++, in++, out++) {<br /><br />---------------<br /><br />// grab original texture size for override textures<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Com_sprintf(name, sizeof(name), &quot;textures/%s.wal&quot;, in-&gt;texture);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; out-&gt;image = GL_FindImage(name, it_wall, false);<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!out-&gt;image) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // failed to load WAL, use default<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Com_Printf(&quot;Couldn&#39;t load %s\n&quot;, name);<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; out-&gt;image = GL_FindImage(&quot;pics/noimage.tga&quot;, it_pic, false);<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!out-&gt;image)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; out-&gt;image = r_notexture;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // no normal/glow map<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get file name without path<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; purename = COM_SkipPath(in-&gt;texture);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // check if we have something to override with<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Com_sprintf (name, sizeof(name), &quot;overrides/%s.tga&quot;, purename);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; image = GL_FindImage(name, it_wall, false);<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!image) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Com_sprintf (name, sizeof(name), &quot;overrides/%s.dds&quot;, purename);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; image = GL_FindImage(name, it_wall, false);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // scale override texture size<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (image) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; image-&gt;width = out-&gt;image-&gt;width;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; image-&gt;height = out-&gt;image-&gt;height;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // use override instead of WAL<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; out-&gt;image = image;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br /><br />---------------------<br />
Какой богатый внутренний мир! Дай-ка посмотрю.....