Простое средство создания простой графики:
Повозился с OpenGL - умри и не встань, из пушек по воробьям, там столько не нужных мне заморочек. Есть средство PovRay - что надо : ты ему говоришь "мне, пожалуйста, сюда цилиндрик такой, сюда такую сферу, сюда вот треугольник; давай, делай картинку". Но очень медленно работает, просто умри, как медленно.
Может, есть какие-то надстройки для OpenGL или альтернативные простые средства, чтобы не думать о том, кто там шейдер, кто там рейдер, а кого потом еще удалить надо?
Что может быть проще OpenGL и её библиотеки glu32.dll (glu.h)... Используй её для визуализации:
Ну а настройка камеры, света, материалов и т.д. - это уже дело техники... Но тоже не составляет большого труда...
Ну а настройка камеры, света, материалов и т.д. - это уже дело техники... Но тоже не составляет большого труда...
Может, я что-то не то ищу, но вот, например, цитата:
"В заключение, добавлю, что если вы поменяете местами создание цилиндра и сферы, то никакого эффекта прозрачности не увидите. Это не баг, а фича - так задумано. Секрет прост: вы должны сначала рисовать дальние объекты, а потом ближние. Связано это с тем, что выполняется тест глубины. Теперь смотрите, что получается. Если вы сначала рисуете сферу(она удалена), а потом цилиндр, то выполняется это следующим образом. "
И про такого рода "фичи" я везде читаю. Но это же бред!!! Какого рожна простой смертный должен заморачиваться такими, с позволения сказать, фичами?
Там, что, никакой автоматики нет? Включил, пусть FPS=1.0, он мне не важен вообще, но только чтобы просто я задаю объекты - программа рисует.
Надо-то всего на всего вывести трехмерный массив векторов в трехмерном пространства (каждый вектор единичной длины, расположен в узле прямоугольной сетки фиксированного шага, и представляется, как состыкованный конус и цилиндр), причем один слой непрозрачный, остальные - с убывающей прозрачностью + юзер вращает мышкой или клавой все это.
Может, где-то есть готовые решения (заготовки) для вращения мышкой, автосвета и т.п.?
Етим все сказано.
Освещение делаеться просто: нужны нормали к векторам и включенный режим GL_LIGHTING. Так же просто выводятся разные графические объекты:
примечание: для разных типов чисел в opengl есть разные функции работы с ними: glVertex3f (принимает три числа float), glVertex3d (принимает три числа типа double) и тд.
glEnable (GL_LIGHTING); // будет свет
glBegin (GL_TRIANGLES); //GL_TRIANGLES - режим построения геометрии
glNormal3f (x,y,z); // нормаль для вектора 0 (а шоп был свет)
glVertex3f (x,y,z); //вектор 0
...
glNormal3f (x,y,z); // нормаль для вектора n
glVertex3f (x,y,z); //вектор n
glEnd ();
SwapBuffers (hDC); // переключаем буфера (копируем на екран)
Три вызваных подряд функции glVertex в данном режиме рисуют трехугольник. Куда проще? Надо понять сам принцип конвеера OpenGL и будет все пучком. А с наскоку (даже с готовыми надстройками над OpenGL ничего небывает).
Нехочу показаться навязчивым, но думаю стоит тебе покопаться в вещах не для "простых смертных" и заглянуть глубже в программирование. Оно тебе ещё пригодитсо (надеюсь).
Кстати, про "фичи":
Что странного в том что нарисованый ранее в буфере кадра объект не меожет быть прозрачным по отношению к следующему объекту?
Да и "фичь" таких не такуж и много.
Забыл добавить:
Относительно вражения сцены:
bool keys[256];
void draw () {
process_keys ();
glLoadIdentity();
glRotatef (rotatex, 1, 0, 0);
glRotatef (rotatey, 0, 1, 0);
// рисуем сцену
SwapBuffers (hDC);
}
void process_keys () {
if (keys['W']) rotatex -= 0.1;
if (keys['A']) rotatex += 0.1;
if (keys['S']) rotatey -= 0.1;
if (keys['D']) rotatey += 0.1;
}
Код писался с головы но по идее сцена вращаеться по нажатию на те клавиши.
Так что ты уж определись: либо просто, но без полупрозрачности и теней, либо с полупрозрачностью и тенями, но без претензий на простоту.
PS. Можно, конечно, создать API, которое подходит для твоего конкретного случая, и которым тебе будет легко пользоваться, но внутри оно неизбежно будет довольно сложным. И кто кроме тебя его будет писать?