|
|
|||||
Регистрация: 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,281
|
2 DRAGOnoid: матрица преобразования содержит координаты нормали, т.к. состоит она из проекций ортов i,j,k мувика на глобальный stage. MovieClip к этим ортам жестко привязан и лежит всегда в плоскости ij, следовательно нормаль к нему = k, а k - это третья строчка матрицы преобразования, т.е, учитывая что матрица имеет размеры 4x4:
|
|
|||||
Цитата:
кстати Z буффер бы флешу реально бы не помешал так как сортировать там 3 плоскости образующие тип рельсы - крааайе проблемотично.
__________________
Black DRAGON хочет кушать Т_Т |
Часовой пояс GMT +4, время: 23:51. |
|
« Предыдущая тема | Следующая тема » |
|
|