Форум программистов, компьютерный форум CyberForum.ru

Объединение view и projection матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему не работает cin>> в Sublime Text 3? http://www.cyberforum.ru/cpp/thread1809252.html
Доброго времени суток, подскажите пожалуйста, можно ли в редакторе кода Sublime Text 3 вводить данные во встроенную снизу панель при запуске программы? Выводить данные она выводит, а вот вводить не позволяет.
C++ Скопировать объект, на который ссылается указатель на абстрактный класс Доброго времени суток. У меня такое задание: написать программу символьного дифференцирования, т.е. пользователь пишет функцию f(x), а программа выводит ее производную как f'(x). Так вот есть базовый абстрактный класс, который дан в условии задачи class Expression { public: virtual Expression *diff()=0; //функция дифференцирования virtual void print()=0; //функция вывода... http://www.cyberforum.ru/cpp/thread1809084.html
C++ Немного философии ООП
На днях на работе возник холивар с коллегами, к правильному решению пришли только на следующий день, почитав Мейерса и Саттера (один из участников холивара уже знал о правильном решении, но сторонников неправильного было большинство). Рекомендаций от упомянутых гуру пока не говорю, предлагаю поразмышлять) Итак - есть проект, в проекте используется ООП, скатываться до С считается мовитоном и...
C++ OpenCV захват видео с веб-камеры
Начал изучать OpenCV. В просторах интернета нашел данный код: #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char* argv) { // получаем любую подключённую камеру CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 );
C++ Как компилятор обрабатывает член класса static constexpr const char* http://www.cyberforum.ru/cpp/thread1808427.html
Привет! Наткнулся на непонятный момент class Foo { public: static constexpr const char* PTR = "value"; }; без constexpr не компилируется. Вопрос - как компилятора без линкера разруливает это дело, ведь constexpr value ему нужен на этапе компиляции? Если он это пережевывает, почему тогда constexpr необходим?
C++ Получить график дат санитарных дней в указанном году задача: Городской рынок имеет санитарный день каждый понедельник месяца . Дано номер года и указано день недели , на который приходится 1 января. Получить график дат санитарных дней в указанном году. Помогите пожалуйста решить задачу подробнее

Показать сообщение отдельно
Fulcrum_013
 Аватар для Fulcrum_013
492 / 608 / 68
Регистрация: 14.12.2014
Сообщений: 4,928
Завершенные тесты: 2
20.09.2016, 20:12     Объединение view и projection матриц
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Скажите, правильно ли я понимаию стадии pipeline'а?
Ну примерно так. А если подробнее:
1) сборка примитивов. Т.е. Определение по индексам какие номера вертексов потребуются.
2) Трансформация. Т.е. умножение координат вертекса на матрицу трансформации. (произведение Model*View*Projection) (т.е. фактически то что делает VertexShader)
3) Отсечение. т.е. обрезка отрезков/треугольников/удаление точек вышедших за пределы пирамиды/куба перспективы (как минимум желательно обрезать плоскостью near)
4) Перспетивное деление.
5) Окончательное отсечение (обрезка остальными плоскостями если в пункте 3 резали только плоскостью near)
6) Масштабирование в ScreenSpace
7) Растеризация. т.е. вычисление закрашенных примитивами точек с учетом Z координаты (z интерполируется вдоль примитива) и сортировка по глубине (т.е. z-буфер). Для прошедших z-тест фрагментов вычисление освещенности (т.е. то что делает PixelShader)
Для отрисовки нурбсов и т.п. либо применяют более другие виды интерполяции нежели интерполяция плоскости треугольник при растеризации (в конвейерах профессиональных карт) либо добавляют еще одну стадию конвейера для разбиения патча на треугольники (в обычных домашних ускорителях то что делают Hull и Domain шейдеры) Стадия добавляется между 2 и 3.
Отсечение кстати задачка со многими неизвестными. Потому как по Near очень стоит отсекать до перспективного деления (при перспективном делении все что имеет отрицательный Z будет перевернуто вверх ногами что путает все карты при отсечении отрезков/треугольников вертексы которых лежат по разные стороны плоскости z=0, а вертексы имеющие z=0 вообще вылетят с ексекпшином или получат неопределенное значение). А с другой стороны удобнее отсекать после перспективного деления так как в результате перспективного деления пирамида отсечения превращается в куб отсечения.

Ну а вообще матрицы имеют свойство накапливать трансформацию. При этом в общем то не важно они Row Major или Column Major. Важен только порядок умножения.
К примеру для RowMajor нужно умножать Model*View*Projection и вектор координат умножать на матрицу. А для column Major умножать Projection*View*Model и матрицу умножать на вектор вертекса.

Добавлено через 10 минут
Цитата Сообщение от Pro100Tom Посмотреть сообщение
У меня все матрицы значит в column major записаны.
projection в RowMajor.
в Translation ошибка.
Должно быть
1 0 0 Tx
0 1 0 Ty
0 0 1 Tz
0 0 0 1
 
Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru