TarasB
> Если при вызове функции некоторые параметры - константы, то создаётся копия
> этой функции, в которой все выражения пересчитаны с учётом знания констант
MSVC тоже так делает
Вот бы узнать, а может ли так .NET-овский компилятор делать?
CD
> MSVC тоже так делает
Разве? Я не про шаблонные параметры говорю! А про просто параметры вызова, которые имеют право и не быть константами, в отличие от параметров крестошаблонов (в некоторых других языках шаблоны не имеют этого дурацкого ограничения). Это означает, что параметры вызова ведут себя даже универсальнее, чем параметры шаблона, а это значит, что хвалёные шаблоны вообще не нужны.
> BitBlt
Лучше GWEN.
TarasB
> Я не про шаблонные параметры говорю! А про просто параметры вызова
я тоже говорю про параметры вызова
MSVC-шный оптимизатор умеет так делать
правда исходного кода я не помню, на котором такое видел
а вот такой код у тебя создаст 10к функций?
test(x) { if ( x == 10000) return x; else return test( x+1); } test( 0)
CD
> а вот такой код у тебя создаст 10к функций?
Не, я ограничил глубину.
Вроде он на сотой остановится - подставит неоптимизированную.
Мой скриптповый язык 3Д-моделирования уже умеет отображать время!
Примечательно, что тупой блок (можно было без копирования сделать на рекурсии, но в лом)
push c 0 translate 0 0.2 2 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 rotate : 360 12 0 1 0 l q1 q2 pop
Внутри представляется в виде
glColor id0000002F "0.000" id0000002F "0.000" id0000002F "0.000" id00000036 GL_LINES id00000037 glVertex3fv id0000018D "0.000 0.200 4.000" id00000038 glVertex3fv id0000018E "0.000 0.200 3.800" id00000041 GL_LINES id00000042 glVertex3fv id0000018F "-1.000 0.200 3.732" id00000043 glVertex3fv id00000190 "-0.900 0.200 3.559" id0000004C GL_LINES id0000004D glVertex3fv id00000191 "-1.732 0.200 3.000" id0000004E glVertex3fv id00000192 "-1.559 0.200 2.900" id00000057 GL_LINES id00000058 glVertex3fv id00000193 "-2.000 0.200 2.000" id00000059 glVertex3fv id00000194 "-1.800 0.200 2.000" id00000062 GL_LINES id00000063 glVertex3fv id00000195 "-1.732 0.200 1.000" id00000064 glVertex3fv id00000196 "-1.559 0.200 1.100" id0000006D GL_LINES id0000006E glVertex3fv id00000197 "-1.000 0.200 0.268" id0000006F glVertex3fv id00000198 "-0.900 0.200 0.441" id00000078 GL_LINES id00000079 glVertex3fv id00000199 "0.000 0.200 0.000" id0000007A glVertex3fv id0000019A "0.000 0.200 0.200" id00000083 GL_LINES id00000084 glVertex3fv id0000019B "1.000 0.200 0.268" id00000085 glVertex3fv id0000019C "0.900 0.200 0.441" id0000008E GL_LINES id0000008F glVertex3fv id0000019D "1.732 0.200 1.000" id00000090 glVertex3fv id0000019E "1.559 0.200 1.100" id00000099 GL_LINES id0000009A glVertex3fv id0000019F "2.000 0.200 2.000" id0000009B glVertex3fv id000001A0 "1.800 0.200 2.000" id000000A4 GL_LINES id000000A5 glVertex3fv id000001A1 "1.732 0.200 3.000" id000000A6 glVertex3fv id000001A2 "1.559 0.200 2.900" id000000AF GL_LINES id000000B0 glVertex3fv id000001A3 "1.000 0.200 3.732" id000000B1 glVertex3fv id000001A4 "0.900 0.200 3.559"
То есть все повороты на константный угол для константных точек рассчитываются заранее.
не угодно ознакомиться с VRML ? :)
TarasB
Круто, только слишком уж ассемблер напоминает :)
Bizunow
Ничего общего с асмом.
Ну, я не правильно выразился, твой язык на низкоуровневый похож, а не на ассемблер.
Bizunow
Ну да, руками каждый треугольничек выводишь.
А где ты хочеш это применять?
Мне, почему то, первое что пришло в голову - уровни для какой нибудь tds, но выводить каждый треугольник самостоятельно...
Bizunow
> но выводить каждый треугольник самостоятельно...
Дык можно их в примитивы объединять же и готовыми примитивами шлёпать. Плюс примитивы могут быть настраиваемыми, то есть если нужен гнутый участок трубы - то можно формулами задать, как его гнуть и потом просто задавать только параметры для сгиба, а он сам будет гнуть как надо.
Применяется для моей игры для моделей вагончиков.
Ух ты, не уж то от тебя будет еще один толковый симулятор? Круто, жду :)
Тема в архиве.