![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Цитата:
|
|
||||||
|
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Alex Lexcuk, я скажу вам печальную весть, мужайтесь — у вас поражен мозг. Да, да я точно знаю (я смотрел Доктора Хауса).
Да, Си и Си++ имеют аппаратную поддержку многих вещей, но это не значит, что некоторые алгоритмы не подходят и для флеш (все-таки аппаратная подержка была не всегда), здесь сложно придумать что-то свое, лучшее. Не люблю цепляться к словам, но не говорите того, чего не знаете. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось Яски; 24.03.2009 в 20:43. |
|
|||||
|
>>внедрена в видуху в виде OpenGl
Чего вы спорите??? На столе лежит книжеца (старая) и в ней написано: Быстродейтвие программ использующих OpenGL, существенно зависит от видеоадаптера. Аппаратная реализация всех базовых функций OpenGL - залог высокого быстродействия. Драйвер для видеокарты конечно должен быть установлен, как-же без него-то. У меня когда я эту книгу читал был Пентиум 233Мгц и видуха с 1.5 мГб памяти - OpenGL работал. ![]() и сортировка граней >>Сортируют в редких случаях (прозрачные объекты, различные оптимизации) ито на процессоре. Ну это вы уже погнали волну... >>и тени >>Стандартного (обобщеного) алгоритма построения теней нет. Тени уже есть... Где-то видал как их делать (но, забыл). Можно почитать и узнать. http://gamedev.ru/articles/?id=20121 В общем все работает само-собой вот затестил только что. Код полностью непригодный для флеша //------------(c) Copyright Порев В.Н-------------
void myGlStart(HDC hdc)
{
//hdc = Canvas->Handle;
HGLRC hglrc;
PIXELFORMATDESCRIPTOR pfd;
int iPixelFormat,i,j;
memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 32;
pfd.iLayerType = PFD_MAIN_PLANE;
iPixelFormat = ChoosePixelFormat(hdc, &pfd);
SetPixelFormat(hdc,iPixelFormat,&pfd);
hglrc = wglCreateContext(hdc);
if (hglrc)
wglMakeCurrent(hdc, hglrc);
float nx,ny,nz;
GLfloat lightpos[4] = {3,3,4,1};
GLfloat lightdirection[3] = {-0.5,-0.6,-0.7};
//gluOrtho2D(-400,400,-300,300);
//gluOrtho2D(4,4,-4,4);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
//ракурс показа
gluPerspective(50,double(550/400),1,40);//-400,400,-300,300);
glMatrixMode(GL_MODELVIEW);//видовая матрица
//glLoadIdentity();
glTranslatef(0,0,-10);
glRotatef(27,1,0,0);
glRotatef(-19,0,1,0);
//ЗАДАЕМ ПАРАМЕТРЫ ИСТОЧНИКА СВЕТА
glLightfv(GL_LIGHT0,GL_POSITION,lightpos);
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,lightdirection);
glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,4);
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,50);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_NORMALIZE);
//рисование пирамиды
glColor3f(1,1,0);
NormalVector(&nx,&ny,&nz,
0,4,0,
2,0.7,2,
2,0.7,-2);
glNormal3f(nx,ny,nz);
glBegin(GL_TRIANGLES);
glVertex3f(0,4,0);
glVertex3f(2,0.7,2);
glVertex3f(2,0.7,-2);
//передняя грань
NormalVector(&nx,&ny,&nz,
0,4,0,
-2,0.7,2,
2,0.7,2);
glNormal3f(nx,ny,nz);
glBegin(GL_TRIANGLES);
glVertex3f(0,4,0);
glVertex3f(-2,0.7,2);
glVertex3f(2,0.7,2);
glEnd();
//----------рисуем шахматное поле
glNormal3f(0,1,0);
for (j=-5;j<5;j++)
for (i=-5;i<5;i++)
{
if ((abs(i+j)%2)==0)
glColor3f(1,0,0);
else
glColor3f(1,1,1);
glBegin(GL_QUADS);
glVertex3f(i,0,j);
glVertex3f(i+1,0,j);
glVertex3f(i+1,0,j+1);
glVertex3f(i,0,j+1);
glEnd();
}
glFinish();
}
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Цитата:
Фраза в книжке правильная. Но из неё не следует, что любая видеокарта поддерживает OpenGL. Конкретно ваша полутораметровая видеокарта, почти наверняка, работала в программном режиме (рассчёт производился центральным процессором). Последний раз редактировалось Stargazer; 25.03.2009 в 00:16. |
|
|||||
|
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Цитата:
По крайней мере, когда я сам писал программный рендер (не по делу, а из научного любопытства), я не смог обойтись без сортировки даже в простейших случаях. |
|
|||||
|
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Если есть z-буффер, сортировка не нужна. В z-буффер можно рисовать полигоны в любом порядке, результат всегда будет один. Перед отрисовкой отсекаются повернутые задом к экрану полигоны, во время отрисовки отсекаются части за экраном. Затем происходит проверка по z-буфферу.
|
|
|||||
|
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
2 DRAGOnoid: матрица преобразования содержит координаты нормали, т.к. состоит она из проекций ортов i,j,k мувика на глобальный stage. MovieClip к этим ортам жестко привязан и лежит всегда в плоскости ij, следовательно нормаль к нему = k, а k - это третья строчка матрицы преобразования, т.е, учитывая что матрица имеет размеры 4x4:
|
|
|||||
|
Цитата:
кстати Z буффер бы флешу реально бы не помешал так как сортировать там 3 плоскости образующие тип рельсы - крааайе проблемотично.
__________________
Black DRAGON хочет кушать Т_Т |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|