Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.03.2009, 20:28
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 11  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
Смотрел варианты для С или С++. Флеш им не конкурент. Ибо большая чать, того что мы тут пытаемся сделать внедрена в видуху в виде OpenGl и тени и свет и сортировка граней и многое прочее выполняется в видеокарте, и там ничего химичить не надо - оно идет само собой. Так что С пока пусть полежит в сторонке.
Видеокарты с аппаратной поддержкой 3D были не всегда, как и мощные процессоры. Читайте старые книги и статьи. Здесь есть кое-что.

Старый 24.03.2009, 20:41
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 12  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Alex Lexcuk, я скажу вам печальную весть, мужайтесь — у вас поражен мозг. Да, да я точно знаю (я смотрел Доктора Хауса).
Да, Си и Си++ имеют аппаратную поддержку многих вещей, но это не значит, что некоторые алгоритмы не подходят и для флеш (все-таки аппаратная подержка была не всегда), здесь сложно придумать что-то свое, лучшее.
Не люблю цепляться к словам, но не говорите того, чего не знаете.
Цитата:
внедрена в видуху в виде OpenGl
OpenGl предоставляет стандартный интерфейс для приложений, затем передает выполение команд драйверу видеокарты.
Цитата:
и тени
Стандартного (обобщеного) алгоритма построения теней нет. (если это, конечно не RayTracing, там все по-тупому и отражения и тени). На аппаратном уровне только есть возможность использования наиболее популярных алгоритмов.
Цитата:
и свет
Правда, свет есть.
Цитата:
и сортировка граней
Сортируют в редких случаях (прозрачные объекты, различные оптимизации) ито на процессоре.
Цитата:
оно идет само собой
Само собой ничего не бывает.


Последний раз редактировалось Яски; 24.03.2009 в 20:43.
Старый 24.03.2009, 23:32
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 13  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>внедрена в видуху в виде 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();
}

Старый 25.03.2009, 00:05
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 14  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Чего вы спорите???
На столе лежит книжеца (старая) и в ней написано:
В самой видеокарте OpenGL нет. Точно так же, как в процессоре нет C++. Думаю, такая аналогия будет понятна.

Фраза в книжке правильная. Но из неё не следует, что любая видеокарта поддерживает OpenGL. Конкретно ваша полутораметровая видеокарта, почти наверняка, работала в программном режиме (рассчёт производился центральным процессором).


Последний раз редактировалось Stargazer; 25.03.2009 в 00:16.
Старый 25.03.2009, 00:50
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 15  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
>>Сортируют в редких случаях (прозрачные объекты, различные оптимизации) ито на процессоре.
Ну это вы уже погнали волну...
Ну как бы в видюхе используется z-буффер, при отрисовке полигона, ищется расстояние от экрана до каждого пикселя и проверяется со значением в буффере. После отрисовки получается корректное перекрытие полигонов, для непрозрачных полигонов сортировка не нужна. С прозрачными полигонами есть проблема в том, что они могут перекрывать друг друга, значит их нужно рисовать в определенном однозначном порядке для правильного смешивания.
Цитата:
>>и тени
>>Стандартного (обобщеного) алгоритма построения теней нет.
Тени уже есть... Где-то видал как их делать (но, забыл). Можно почитать и узнать.
Это один из сотни способов построения теней.

Старый 25.03.2009, 01:04
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 16  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
для непрозрачных полигонов сортировка не нужна
Это вопрос интересный. Разве не нужна? А каким образом тогда определяются невидимые плоскости (которые видеокарта не рисует)? Я даже знаю, что для определения относительного положения плоскостей используется механизм с двоичным деревом. Может быть, это и не относится к z-буферу, но всё равно получается, что сортировка происходит.

По крайней мере, когда я сам писал программный рендер (не по делу, а из научного любопытства), я не смог обойтись без сортировки даже в простейших случаях.

Старый 25.03.2009, 11:14
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 17  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Если есть z-буффер, сортировка не нужна. В z-буффер можно рисовать полигоны в любом порядке, результат всегда будет один. Перед отрисовкой отсекаются повернутые задом к экрану полигоны, во время отрисовки отсекаются части за экраном. Затем происходит проверка по z-буфферу.

Старый 25.03.2009, 11:52
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 18  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
Цитата:
>> вариант для C
Смотрел варианты для С или С++. Флеш им не конкурент. Ибо большая чать, того что мы тут пытаемся сделать внедрена в видуху в виде OpenGl и тени и свет и сортировка граней и многое прочее выполняется в видеокарте, и там ничего химичить не надо - оно идет само собой. Так что С пока пусть полежит в сторонке.
Alex Lexcuk, книга, что я вам советовал на первой страничке, написана для того, чтобы самостоятельно написать software-рендерер, а это значит, что ни OpenGL, ни Direct3D там не используются; используется много математики, тригонометрии и DirectDraw для растеризации, что в вашем случае отлично подходит, только DirectDraw заменяется на векторные элементы или BitmapData

Старый 25.03.2009, 15:07
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 19  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
2 DRAGOnoid: матрица преобразования содержит координаты нормали, т.к. состоит она из проекций ортов i,j,k мувика на глобальный stage. MovieClip к этим ортам жестко привязан и лежит всегда в плоскости ij, следовательно нормаль к нему = k, а k - это третья строчка матрицы преобразования, т.е, учитывая что матрица имеет размеры 4x4:
Код AS3:
n.x = mc.transform.matrix3D.rawData[8];
n.y = mc.transform.matrix3D.rawData[9];
n.z = mc.transform.matrix3D.rawData[10];

Старый 25.03.2009, 19:26
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 20  
Ответить с цитированием
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Цитата:
Сообщение от undefined Посмотреть сообщение
2 DRAGOnoid: матрица преобразования содержит координаты нормали, т.к. состоит она из проекций ортов i,j,k мувика на глобальный stage. MovieClip к этим ортам жестко привязан и лежит всегда в плоскости ij, следовательно нормаль к нему = k, а k - это третья строчка матрицы преобразования, т.е, учитывая что матрица имеет размеры 4x4
СПАСИБО! я уже и не надеялся услышать дельный ответ - завтра попробую поэкспериментировать =)))

кстати Z буффер бы флешу реально бы не помешал так как сортировать там 3 плоскости образующие тип рельсы - крааайе проблемотично.
__________________
Black DRAGON хочет кушать Т_Т

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.