Board.KolibriOS.org
http://board.kolibrios.org/

TinyGL
http://board.kolibrios.org/viewtopic.php?f=24&t=584
Page 1 of 5

Author:  iadn [ Thu Oct 12, 2006 11:11 pm ]
Post subject:  TinyGL

http://fabrice.bellard.free.fr/TinyGL - opengl-подобная графическая библиотека.

Вот примеры на ее основе:

http://www.iadn.narod.ru/examples/triangle.7z Закрашенный треугольник
http://www.iadn.narod.ru/examples/cubeline.7z Куб из линий
http://www.iadn.narod.ru/examples/torus.7z Тор и шар
http://www.iadn.narod.ru/examples/pyramid.7z Пирамида
http://www.iadn.narod.ru/examples/gears.7z Шестеренки
http://www.iadn.narod.ru/examples/cubetext.7z Куб с текстурой
http://www.iadn.narod.ru/examples/md2View.7z Вьювер md2 файлов моделей игры Quake2 (в архиве 2 модели)

В Kolibri примеры с использованием текстуры запускать из KFar

Author:  camper [ Fri Oct 13, 2006 11:44 pm ]
Post subject: 

Это просто здорово! Выглядит все очень хорошо. Пора делать 3д шутер :)

Author:  andrew_programmer [ Sat Oct 14, 2006 8:21 pm ]
Post subject: 

Хорошие демки.Особенно мне понравился трехмерный человек(или монстр ?).

В TinyGL используются простейшие 3D вычисления.Такого рода библиотеку можно и самому написать.Причем лучше писать на ассемблере.

Я ради интереса сравнивал скорость 3D вычислений написанных на C и скорость этих же вычислений,написанных мной на чистом ассемблере.Ассемблерный код был быстрее от 20% для самых простых вычислений(скалярное произведение векторов и длина вектора) и выше по мере возрастания сложности алгоритма.Поэтому лучше писать на ассемблере.

Author:  vectoroc [ Sun Oct 15, 2006 12:29 am ]
Post subject: 

может просто си компилятор был далеко не самый лучший? или настройки? по статистике си-компилеры уступают самым лучшим из асемблерщиков на пару процентов

Author:  halyavin [ Sun Oct 15, 2006 9:34 am ]
Post subject: 

Victor
Я обгонял си компилер (со всеми оптимизациями) и в 1.8 раза. Тут ведь дело еще в том, что на ассемблере можно реализовывать алгоритм немного по-другому (при этом получающаяся программа на ассемблере не соответствует никакой программе на си), а си компилер должен следовать программе и к тому же не может производить оптимизации, которые используют специфику алгоритма.

Author:  andrew_programmer [ Sun Oct 15, 2006 9:46 am ]
Post subject: 

Компилятор был GCC в режиме максимальной оптимизации по скорости.

Виктор,вообще полезно,хотябы для себя,просматривать ассемблерный код,который выдаёт компилятор.Тем более,что в GCC для этого не нужно дизассемблировать код - достаточно при компиляции вместо gcc -o ......... написать gcc -S .......

Внимательно посмотрев код,становиться понятным почему ассемблерный код ВСЕГДА быстрее.В языках высокого уровня НЕИЗБЕЖНО использование переменных,которые храняться в ОПЕРАТИВНОЙ памяти.Тоесть в самой медленной памяти.Когда же код пишет ассемблерщик,то он по МАКСИМУМУ использует все РЕГИСТРЫ или СТЕК FPU,которые являются САМОЙ БЫСТРОЙ памятью на компьютере.Поэтому алгоритм средней сложности ,написанный на ассемблере,может быть быстрее своего сишного аналога от 10%-5000%

>по статистике си-компилеры уступают самым лучшим из асемблерщиков на пару процентов

Я незнаю,что за НЕУЧ составлял эту статистику.Элементарное измерение скорости кода при помощи комагды RDTSC,которая позволяет измерять скорость кода в тактах(я всегда измеряю скорость ей),показывает,что ассемблерный код быстрее от 10%(но не как не 2%) и выше.Реально это выше может достигать 5000%

НЕ ДОВЕРЯЙТЕ НЕУЧАМ ! Они ВСЕГДА ерунду пишут.

Author:  vectoroc [ Sun Oct 15, 2006 10:21 am ]
Post subject: 

Ну как бы эта статистика из неофициальных источников... Я вот на Serg посмотрел, где он писал что компилер как-то где-то что-то ему заоптимайзил и сделал выводы. Это не единственный пример, просто остальные не припомнишь?
P.S. andrew_programmer так понимаю что неуч это про меня, ну так ты и пиши что я неуч. Спорить не буду, все мы в чем-то неучи
P.P.S. бредом как пользоваться мне так никто не обьяснил :? кинтесь в меня ссылкой чтоли

Author:  andrew_programmer [ Sun Oct 15, 2006 11:23 am ]
Post subject: 

Виктор - это я не про тебя.Эта проблема всего мира.Я цифру 2% слышал от многих.Причем эти многие вообще незнали ассемблера.

Author:  camper [ Sun Oct 15, 2006 5:58 pm ]
Post subject: 

оффтоп: Да уж, лучше точно знать, прежде чем говорить :) Но очень многие так поступают, ничего не поделаешь!

Author:  KCEOH [ Sun Oct 15, 2006 7:16 pm ]
Post subject: 

Фпс жуткий...
Cubeline
В винде через эмуль 105-120 фпс, на полном экране около 22-28.
В колибри же обычное окно 15-20 фпс, развернутое - 9-10... :(

Author:  andrew_programmer [ Sun Oct 15, 2006 7:36 pm ]
Post subject: 

А кто в Колибри реализовал аппаратный PutImage ?

Ответ: аппаратный PutImage в Колибри не реализован.Значит процессор тратит часть времени на отрисовку кадра.Если бы кадры отрисовывались аппаратно,то процессор в этоже время мог просчитывать 3D графику,незаботясь о выводе кадров.Тогда бы FPS возрасло в несколько раз(в 2-3 раза).

Author:  iadn [ Sun Oct 15, 2006 9:43 pm ]
Post subject: 

TinyGL написана на Cи для GCC. Для сборки библиотеки и компиляции примеров использовались для сравнения два компилятора GCC и VC++ 2003.
В результате Cubeline
GCC 59Kb 297 fps
VC++ 2003 37Kb 398 fps

KCEOH
А какая конфигурация машины? TinyGL реализует минимум команд OpenGL и даже при этом выдает такой низкий результат. Правда в ней не используется MMX.
Но значит, в любом случае попытки переноса той же MESA не имеют смысла до тех пор, пока не будут реализованы хотя бы простейшие драйвера для аппаратного ускорения. :(

Author:  andrew_programmer [ Sun Oct 15, 2006 10:56 pm ]
Post subject: 

Не какую MESA ни в коем случае переносить не нужно.

У меня в Linux в качестве OpenGL драйвера стоит MESA.Я насмотрелся на FPS-ы выдаваемые ей,а также смотрел код MESA.Меня не устркаивают ни FPS,ни код.Если ещё учесть,что код написан на C,то понятно,что максимально возможные FPS в несколько раз больше.К примеру антианализинг - самая тормозящая часть вычислений.На ассемблере он в несколько раз быстрее работает.А MMX и SSE там используются только для работы с нормалями и для блендинга.

У нас будет своя OpenGL -на чистом ассемблере.Причём в двух вариантах.Одна для программирования на ассемблере и будет ввиде inc файла.А другая - ввиде библиотеки формата ELF,которая будет линковаться к сишной программе на этапе компиляции.

Про ускорение.

Вообще,ускорить саму библиотеку OpenGL в принципе невозможно.Потомучто в ней при помощи одной команды производится деиствие только над одним объектом - одним вектором или точкой.А SSE и 3D ускорение можно использовать только в случае,когда необходимо произвести однотипную операцию над большим массивом векторов или точек.Поэтому ускорять нужно библиотеку GLU(она как бы является частью библиотеки OpenGL).Кстати в MESA эта библиотека написана на C без васякого ассемблера(а заначит и без SSE).

Author:  diamond [ Tue Oct 17, 2006 6:05 pm ]
Post subject: 

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

Author:  iadn [ Tue Oct 17, 2006 8:44 pm ]
Post subject: 

На сайте пока одни примеры. Исходники примеров, библиотеки и способ компиляции скоро будут.

diamond
Спасибо за хороший эмулятор :), без него адаптация библиотеки под Колибри, создание, перенос и отладка примеров была бы просто невозможной, либо заняла бы раза в три больше времени. Вообще процесс сдвинулся с места после того как в одной из веток форума был обнаружен новый эмулятор.

Page 1 of 5 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/