| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Плмогите с рисованием в OpenGL |
| Автор: Ferrum 16.11.2006, 22:42 |
| Я только начал кодить на 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 6.12.2006, 22:36 |
| Для начала используй дисплейные списки или массивы вершин (glVertexPointer, glTexcoordPointer, glNormalPointer). С VBO сам маялся долго, не работает. Временно забил не него, но если интересуешься поищи уроки NeHe, погугли. Там есть. |