Здесь я бы хотел рассказать не о том, как работать с DelphiX, OpenGL или
Direct, а о том, как можно вращать многогранники с помощью простых действий:
moveto и lineto.
Так получилось, что передо мной встала задачи работы с канвой (TCanvas) больших
размеров (от 2000 и более точек в одном измерении). Через достаточно короткое
время работы я обнаружил, что методы TCanvas иногда ведут себя некорректно.
Некорректность поведения заключалась в том, что при определенных условиях
графические примитивы, например, прямые линии, либо отображались неправильно,
либо просто исчезали. Проверка и перепроверка текста программы ничего не дала.
Попытка найти какую-либо информацию о возможных особенностях работы с канвой
таких размеров также ни дала положительного результата (может быть, просто плохо
искал). Пришлось разбираться самому, а затем и обратиться за советом к некоторым
жителям Королевства.
При попытке изобразить некую анимацию использую только средства TCanvas, на
экране получается черте-чего. Все мельтешит, дергается, одним словом - не
годится.
Для получения " гладкой" ( не мельтешащей ) анимация в программах не
использующих DirectX, я обычно использую следующую технику.
Иногда бывает нужно сложить два или более цветов для получения что-то типа
переходного цвета. Делается это весьма просто. Координаты получаемого цвета
будут равны среднему значению соответствующих координат всех цветов.
TCanvas автоматически ReleaseDC не вызывает. При создании холста с WindowDC в
качестве дескриптора, лучшей идеей будет создание потомка TCanvas
(моделированного с TControlCanvas):