- •Учебник
- •Оглавление
- •Введение
- •Глава 1
- •I. Установка
- •II. Удаление
- •Глава 2. Первый проект
- •Глава 3. Создание сцены в режиме design time
- •Создание объектов:
- •Глава 4. Примитивные объекты. Вкладка Basic geometry.
- •Глава 5. Ориентация, координаты.
- •Глава 6. Движение.
- •Глава 7. Как узнать, сколько сейчас fps?
- •Глава 8. Полноэкранный режим.
- •Глава 9. Работа с материалами.
- •I. Прямое обращение к .Material
- •Глава 10. Использование 3d моделей.
- •I. Форматы моделей
- •Глава 11. Прокси объекты.
- •Глава 12. Создание земной поверхности с glTerrainRenderer.
- •Глава 13. Создание земной поверхности с glFreeForm.
- •Глава 14. Итоги работы с glTerainrender и glFreeForm.
- •Глава 15. Создание земной поверхности с glHeightField.
- •Глава 15. Создание неба.
- •Глава 16. GlAtmosphere.
- •Глава 17. Спецэффекты.
- •I. Огонь
- •II. Молния
- •III. Дождь
- •IV. Снег
- •VI. Блики от источников света
- •Глава 18. Растительность.
- •I. Деревья и кустарники
- •II. Трава
- •Глава 19. Работа со шрифтами и вывод надписей.
- •I. Вывод текста через компонент glWindowsBitmapFont
- •II. Проблема с glWindowsBitmapFont в Windows Vista
- •Глава 20. Выделение объекта мышкой.
- •Глава 21. Создание сцены в режиме runtime.
- •Глава 22. Тени.
- •Глава 23. Туман.
- •Глава 24. Vbo или расширение arb_vertex_buffer_object в OpenGl.
- •Глава 25. Fbo или расширение ext_framebuffer_object в OpenGl.
- •Глава 26. Рисование на канве.
- •Глава 27. Использование чистого OpenGl.
- •Глава 28. Звуки.
- •I. Проигрывание звуков с помощью bass
- •II. Проигрывание звуков с помощью fmod
- •III. Проигрывание звуков с помощью OpenAl
- •Глава 29. Игровое меню.
- •Глава 30. Примитивная физика dce.
- •Глава 31. Физика ode.
- •II. Основы библиотеки ode(: tglodeManager и tglodeJointList) на примере создания подобия боулинга.
- •Глава 32. Физика Newton.
- •Глава 33. Ручная проверка коллизий.
- •V. Ручная проверка коллизии
- •Глава 34. Шейдеры. Терменология.
- •Глава 35. Шейдеры. История и компоненты.
- •Глава 36. Шейдеры glsl. Введение.
- •Глава 37. Шейдеры glsl. Использование без компонентов. Самый примитивный шейдер.
- •Глава 38. Шейдеры glsl. Немного о спецификации. Типы данных и переменные
- •Стандартные функции
- •Поддерживаемые компоненты векторов
- •Глава 40. Шейдеры glsl. Текстурирование.
- •Глава 41. Шейдеры glsl. Использование без компонентов. Мультитекстурирование. Смешение трёх цветов по базовой карте.
- •Глава 42. Шейдеры glsl. Использование через компонент glslShader. Часть первая – Первые шаги.
- •Глава 43. Шейдеры glsl. Использование через компонент glslShader. Часть вторая – знакомимся со светом. Передача параметров в шейдер.
- •Глава 44. Шейдеры glsl. Использование через компонент glslShader. Часть третья – текстуры.
- •Глава 45. RenderMonkey.
- •Глава 46. Оптимизация программы.
- •Глава 47. Практика. Создание мира
- •Приложение
- •I. Типы векторов и матриц
- •II. Работа с векторами
- •III. Работа с матрицами
- •IV. Методы объектов glScene
- •Предметный указатель по компонентам glScene
Приложение
I. Типы векторов и матриц
Количество элементов |
Тип |
Описание в модуле VectorTypes |
Тип элементов |
Двухмерные векторы (массивы из двух элементов) |
TVector2d |
array[0..1] of double |
double |
TVector2f |
array[0..1] of single |
single |
|
TVector2i |
array[0..1] of longint |
longint |
|
TVector2s |
array[0..1] of smallint |
smallint |
|
TVector2b |
array[0..1] of byte |
byte |
|
Трёхмерные (массивы из трёх элементов) |
TVector3d |
array[0..2] of double |
double |
TVector3f |
array[0..2] of single |
single |
|
TVector3i |
array[0..2] of longint |
longint |
|
TVector3s |
array[0..2] of smallint |
smallint |
|
TVector3b |
array[0..2] of byte |
byte |
|
Четырёхмерные (кроме X,Y,Z содержат элемент W) |
TVector4d |
array[0..3] of double |
double |
TVector4f |
array[0..3] of single |
single |
|
TVector4i |
array[0..3] of longint |
longint |
|
TVector4s |
array[0..3] of smallint |
smallint |
|
TVector4b |
array[0..3] of byte |
byte |
|
Трёхмерные Матрицы (массивы трёхмерных векторов) |
TMatrix3d |
array[0..2] of TVector3d |
TVector3d |
TMatrix3f |
array[0..2] of TVector3f |
TVector3f |
|
TMatrix3i |
array[0..2] of TVector3i |
TVector3i |
|
TMatrix3s |
array[0..2] of TVector3s |
TVector3s |
|
TMatrix3b |
array[0..2] of TVector3b |
TVector3b |
|
Четырёхмерные Матрицы (массивы Четырёхмерных векторов) |
TMatrix4d |
array[0..3] of TVector4d |
TVector4d |
TMatrix4f |
array[0..3] of TVector4f |
TVector4f |
|
TMatrix4i |
array[0..3] of TVector4i |
TVector4i |
|
TMatrix4s |
array[0..3] of TVector4s |
TVector4s |
|
TMatrix4b |
array[0..3] of TVector4b |
TVector4b |
II. Работа с векторами
VectorSubtract(const V1, V2 : TVector) : TVector; - вычитает V2 из V1
SubtractVector(var V1 : TVector; const V2 : TVector); - вычитает из v1, v2 и результат заносит в v1. VectorSubtract(const v1 : TVector; delta : Single) : TVector; - из каждой координаты вектора v1
вычитает число delta.
VectorAdd(const v1, v2 : TVector) : TVector; - складывает два вектора.
AddVector(var v1 : TVector; const v2 : TVector); - складывает вектора v1, v2 и помещает результат в v1.
AddVector(var v : TVector; const f : Single); - к каждой координате вектора v прибавляет число f.
CombineVector(var vr : TVector; const v : TVector; var f : Single); - в переменную vr заносит линейную комбинацию векторов vr:=vr+v*f.
VectorCombine(const V1, V2: TVector; const F1, F2: Single): TVector; - возвращает линейную комбинацию двух векторов по формуле Result:= V1*F1+V2*F2.
VectorCombine3(const V1, V2, V3: TVector; const F1, F2, F3: Single): TVector; - возвращает линейную комбинацию трех векторов по формуле Result:= V1*F1+V2*F2+V3*F3.
VectorDotProduct(const V1, V2 : TVector) : Single; - умножает вектор строку V1 на V2 по формуле
Result:=V1[X] * V2[X] + V1[Y] * V2[Y] + V1[Z] * V2[Z]
DistanceBetweenAngles(angle1, angle2 : Single) : Single; - вычисляет угловое расстояние между двумя углами в радианах. Результат лежит в интервале от 0 до пи.
VectorLength(const v : TVector) : Single; - вычисляет длину вектора по формуле: корень из суммы квадратов координат sqrt (x*x+y*y+z*z+w*w).
VectorLength(const x, y, z : Single) : Single; вычисляет длину вектора по формуле: корень из суммы квадратов координат sqrt (x*x+y*y+z*z).
VectorNorm(const v : TVector) : Single; - вычисляет вторую норму по формуле x*x+y*y+z*z+w*w. NormalizeVector(var v : TAffineVector); - нормализует вектор, т.е. делает длину вектора равную
единице.
VectorNormalize(const v : TVector) : TVector; - возвращает нормализованный вектор. VectorAngleCosine(const V1, V2: TAffineVector) : Single; - возвращает косинус угла между
векторами.
VectorNegate(const v : TVector) : TVector; - меняет направление v на противоположное. ScaleVector(var v : TVector; factor : Single); - каждую координату вектора v умножает на factor. ScaleVector(var v : TVector; const factor : TVector); - перемножает соответствующие координаты v и
factor, результат заносит в переменную v.
DivideVector(var v : TVector; const divider : TVector); - делит координаты v на соответствующие координаты divider, результат заносит в переменную v.
VectorEquals(const V1, V2: TVector) : Boolean; - сравнивает два вектора и возвращает true если она равны.
AffineVectorEquals(const V1, V2: TVector) : Boolean; - сравнивает координаты x, y, z и если они равны возвращает true.
VectorIsNull(const v : TVector) : Boolean; - возвращает true если координаты x=y=z=0, (w –
игнорируется).
VectorSpacing(const v1, v2 : TVector): Single; - вычисляет норму1, т.е. результат равен сумме модулей разностей координат Abs(v1[x]-v2[x])+Abs(v1[y]-v2[y])+ Abs(v1[z]-v2[z])+ Abs(v1[w]-v2[w])
VectorDistance(const v1, v2 : TVector): Single; - вычисляет расстояние между двумя точками. VectorDistance2(const v1, v2 : TVector): Single; - вычисляет норму2 по формуле sqr(v1[x]-v2[x])+
sqr(v1[y]-v2[y])+ sqr(v1[z]-v2[z])
RotateVector(var vector : TVector; const axis : TVector; angle : Single); - поворачивает вектор vector
относительно оси axis на угол angle.
VectorRotateAroundX(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси X на угол alpha.
VectorRotateAroundX(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси Y на угол alpha.
VectorRotateAroundZ(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси Z на угол alpha.
AbsVector(var v : TVector); - координаты вектора заменяются их модулями.