ALPINE
> выложена Linux-версия
Может тогда и на Haiku запустишь? Графика вроди не сложная, софтвар выдержит.
до этого момента о такой ОС не слышал :)
нет, под хаику реализацию делать не буду. надо довести до ума Linux (да и винду), и по хорошему браться за мак; но это будет не скоро, ибо мак я толком в глаза не видел :)
ALPINE
> Спрайта 32х32 текселя, а его размер может варьироваться в зависимости от размера окна.
Т.е. на экране один и тот же спрайт может рисоваться и в 32х32, и в 39х39? В таком случае стыки без геморроя не заборешь. В ход пойдут и бордюры, и прочая лабуда.
> Т.е. на экране один и тот же спрайт может рисоваться и в 32х32, и в 39х39?
да, квадрат NxN от 1х1 до 8192х8192 :)
> В ход пойдут и бордюры, и прочая лабуда.
не понял. Я вообще не понимаю, почему он цепляет стоящий рядом спрайт? я же указываю 0.5f, это значит... ага, стык 31-го и 32-го текселя (текстура 64х64), и размытие он делает вроде как правильно. И решением было бы смещение на пол текселя - но ты сказал, что так делают только с D3D. может это решение подойдет и для OpenGL? проверю. А какое решение правильное?
>И решением было бы смещение на пол текселя
Не в этом случае. Пол-текселя - это вообще про D3D, и только для случая маппинга 1:1.
Стыков не будет, когда граница между писелями спрайта на экране проходит точно между текселями. Но у тебя никакой привязки не озвучено, спрайт может быть произвольного размера.
Для наглядности:
Меньшая сетка - экранные пиксели. Крупные квадраты - тексели спрайта.
Слева вариант, когда границы текселей совпадают с границами пикселей.
Справа - плохой вариант. Границы не совпадают. А так как нельзя нарисовать половину пикселя, то в него попадают часть данных из соседнего спрайта на той же текстуре (красный).
И это только про границы прямоугольных спрайтов. Внутри спрайта работают те же правила. Если границы текселей не совпадают с границами пикселей, то получишь или замыливание текстуры при GL_LINEAR, или дергающиеся при перемещениях линии (толщина будет то нормальной, то вдвое шире) при GL_NEAREST.
Часто вспоминаемые полпикселя - это потому что (грубо) границы текселей в D3D идут по центру экранных пикселей.
Подробнее: Rasterization rules.
К GL оно не имеет никакого отношения.
Большое спасибо. Значит, решение - расставлять вершины точно по пикселям, т.е. удостовериться, что например glVertex2f(1.0f; 1.0f) при текущей матрице проекции и трансформации укажет точно в пиксель. правильно понимаю?
Классные танчики, только кирпичи сделай покрасивее.
ALPINE
> т.е. удостовериться, что например glVertex2f(1.0f; 1.0f) при текущей матрице
> проекции и трансформации укажет точно в пиксель. правильно понимаю?
Правильно. Только не в центр пикселя, а на его границу. Т.е. вершина (1,1) находится точно в правом нижнем (/верхнем) углу пикселя.
Linux версия не запускается.
$ cd r2bc_linux/bin $ chmod +x r2bc_X11 $ ./r2bc_X11 ./r2bc_X11: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory $ sudo cp /usr/lib/libopenal.so.0 /usr/lib/libopenal.so.1 Password: $ ./r2bc_X11 ./r2bc_X11: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./r2bc_X11) ./r2bc_X11: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./r2bc_X11) ./r2bc_X11: /lib/libc.so.6: version `GLIBC_2.4' not found (required by ./r2bc_X11) $ uname -a Linux localhost.localdomain 2.6.17-1.2157.1asp #1 Fri Aug 11 03:02:11 EEST 2006 i686 athlon i386 GNU/Linux
Den Zurin
ну видно же - у тебя отсутствует OpenAL. чё-то не понял какой у тебя дистрибутив, но как правило libopenal есть во всех репозиториях.
Ну как же это отсутствует?
> $ sudo cp /usr/lib/libopenal.so.0 /usr/lib/libopenal.so.1
Дистрибутив ASP Linux 11 (2006 г.). Сейчас попробую запустить на Убунте, она поновее.
ALPINE
> чё-то не понял какой у тебя дистрибутив
2.6.17-1.2157.1asp
У него ASPLinux, только че-то старенький.
Ой, сорри, невнимательно прочитал лог.
> ./r2bc_X11: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./r2bc_X11)
видимо, умный компилятор GCC (G++) не утруждал себя включать в бинарный файл функции стандартных библиотек С++, и приложение реально берёт их из libstdc++.so; как будет время, я покурю этот вопрос и скомпилирую более "полную" версию. А у тебя наверное и правда старенькая система - может, обновы поставишь...
ALPINE
> как будет время, я покурю этот вопрос
Есть ключик -static-libgcc, у версий посвежее есть еще и -static-libstdc++.
"Милые" - самое подходящее слово:)
и звуки вызывают ностальгию помню как в свое время на Денди резались..:)
Я вот тоже заканчиваю проект своих "бэттл-танчиков" и даже не знал, что какой-то конкурс оказывается проводится..
Тема в архиве.