Тема: OpenGL
Показать сообщение отдельно
Старый 20.06.2006, 12:47   #24
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Вот написал три теста "рисования" большой плоскости из GL_QUADS 150*150 т.е. 22500 квадов или 45000 треугольников с различными техниками отображения:

1. Array.exe - создается простой массив вершин (Ground) и рисуется следующим образом:

glInterleavedArrays(GL_T2F_N3F_V3F, 0, Ground);
	glDrawArrays(GL_QUADS, 0, fwidth*fheight*4);
2. ArrayInDisplayList.exe - тож самое, что и первый вариант, только массив помещается в дисплейный список:


flist=glGenLists(1);
	glNewList(flist,GL_COMPILE);

	glInterleavedArrays(GL_T2F_N3F_V3F, 0, Ground);
	glDrawArrays(GL_QUADS, 0, fwidth*fheight*4);
	glEndList()

	...


	glCallList(flist);
3. DisplayList.exe - дисплейный список заполняется и рисуется следующим образом:

int t[2];
	int v[3];

	flist=glGenLists(1);
	glNewList(flist,GL_COMPILE);

		for (int i=0; i<fwidth; i++)
		{
			for (int j=0; j<fheight; j++)
			{
				glBegin(GL_QUADS);
					glNormal3i(0, 1, 0);
						t[0]=0; t[1]=0; v[0]=i; v[1]=0; v[2]=j;
					glTexCoord2iv(t); glVertex3iv(  v );
						t[0]=0; t[1]=1; v[0]=i; v[1]=0; v[2]=j+1;
					glTexCoord2iv(t); glVertex3iv(  v );
						t[0]=1; t[1]=1; v[0]=i+1; v[1]=0; v[2]=j+1;
					glTexCoord2iv(t); glVertex3iv(  v );
						t[0]=1; t[1]=0; v[0]=i+1; v[1]=0; v[2]=j;
					glTexCoord2iv(t); glVertex3iv(  v );
				glEnd(); 
			}
		}
	glEndList();

	...
	
	glCallList(flist);
Потестите пожалуйста... У меня странные результаты:
первые два варианта ведут себя одинаково (FPS 122 - 164 соответственно когда все видно и когда не видно ничего), а вот третий... вообще должно быть медленнее, а выходит что OpenGL как-то сам включает алгоритм определения видимости треугольников и когда на экраене ниче нет FPS выростает до 584, а когда видно поле результат такой же как и в первых двух случаях (FPS около 128 )


PS: Особо интересно как это будет работать на ATI карточках...

PS2: Мой комп: Cel D 2.4GHz/512 MB Dual/64MB GF4 MX440
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием