![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Ferrum |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 16.11.2006 Репутация: нет Всего: нет |
Я только начал кодить на OpenGl и сталкнулся с поблнмой, что рисуется довольно медленно
Вот мой код: (рисование модели) glBegin(GL_TRIANGLES); for (int i = 0; i < CurrentModel->FacesNumber; i++){ for (int j = 0; j < 3; j++){ switch (j){ case 0:{ if (CurrentModel->TVertsNumber != 0) { Temp2 = CurrentModel->MeshMapCoord1[i]; } Temp = CurrentModel->MeshFaces1[i]; break; }; case 1:{ if (CurrentModel->TVertsNumber != 0) { Temp2 = CurrentModel->MeshMapCoord2[i]; } Temp = CurrentModel->MeshFaces2[i]; break; }; case 2:{ if (CurrentModel->TVertsNumber != 0) { Temp2 = CurrentModel->MeshMapCoord3[i]; } Temp = CurrentModel->MeshFaces3[i]; break; }; } if (CurrentModel->TVertsNumber != 0) { glTexCoord2f(CurrentModel->MeshTVertsPointX[Temp2], CurrentModel->MeshTVertsPointY[Temp2]); } glNormal3f(CurrentModel->MeshNormalsPointX[Temp], CurrentModel->MeshNormalsPointY[Temp], CurrentModel->MeshNormalsPointZ[Temp]); glVertex3f(CurrentModel->MeshVertsPointX[Temp] * ScaleX, CurrentModel->MeshVertsPointY[Temp] * ScaleY, CurrentModel->MeshVertsPointZ[Temp] * ScaleZ); } } glEnd(); Класс модели: class TModel{ public: bool MTLWith; bool BitMapWith; float Shininess; float MaterialAmbient[4]; float MaterialDiffuse[4]; float MaterialSpecular[4]; float *MeshVertsPointX; float *MeshVertsPointY; float *MeshVertsPointZ; float *MeshNormalsPointX; float *MeshNormalsPointY; float *MeshNormalsPointZ; float *MeshTVertsPointX; float *MeshTVertsPointY; int *MeshFaces1; int *MeshFaces2; int *MeshFaces3; int *MeshMapCoord1; int *MeshMapCoord2; int *MeshMapCoord3; int FacesNumber; int VertsNumber; int TVertsNumber; }; как его можно оптимизировать?(желательно с кодом) Я прочитал про VBO, но реализовать не смог.... Какое расширение нужно подключать для работы с VBO? |
|||
|
||||
| Arks |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Для начала используй дисплейные списки или массивы вершин (glVertexPointer, glTexcoordPointer, glNormalPointer).
С VBO сам маялся долго, не работает. Временно забил не него, но если интересуешься поищи уроки NeHe, погугли. Там есть. |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |