Имам растерна карта, създадена от dted файл. Искам да използвам това растерно изображение и да създам 3D изобразяване на терен. Опитвам се да го направя с върхови вектори, но изобщо не можах да постигна целта си. Ето моят paintGL код:
void render::paintGL(){
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glTranslatef(0,0,-100);
for(int z=0;z<dted.width()-1;z++){
glBegin(GL_TRIANGLE_STRIP);
for(int x = 0; x<dted.height()-1; x++){
glColor3f(matrix[x][z], matrix[x][z], matrix[x][z]);
glVertex3f(x, matrix[x][z], -z);
//vertex0 ends here
glColor3f(matrix[x+1][z], matrix[x+1][z], matrix[x+1][z]);
glVertex3f(x+1, matrix[x+1][z], -z);
//vertex1 ends here
glColor3f(matrix[x][z+1], matrix[x][z+1], matrix[x][z+1]);
glVertex3f(x, matrix[x][z+1], -z-1);
//vertex2 ends here
glColor3f(matrix[x+1][z+1], matrix[x+1][z+1], matrix[x+1][z+1]);
glVertex3f(x+1, matrix[x+1][z+1], -z-1);
//vertex3 ends here
}
glEnd();
}}
Трябваше да напиша кода вместо копиране и поставяне поради проблеми с интернет. Така че може да има неща, които съм забравил, но съм дал всичко от себе си. Нека обясня променливите и другите неща по-горе:
dted е изображението dted, което създадох, и зададох граници от стойностите на ширината и височината на това изображение. matrix е 2d матрица, която съдържа стойностите на надморската височина, които получавам от предварително създадените dted пиксели на изображението.
След целия код по-горе не успях да изобразя терена. Не знам дали изобразява терена, но просто не ми го показва или изобщо не изобразява. Ако обясните къде ми е грешката и предложите решение за нея, ще бъде страхотно.
Съжалявам за граматическите грешки, ако съм направил такива, и се надявам, че съм обяснил добре проблема си. Ако предоставеният от мен код не е достатъчен, не се колебайте да споменете това и мога да запиша и другите части.
Приятен ден.
Редактиране: Добре, имам свежи новини тук. Успях да нарисувам равнина, след като се справих с някои проблеми с мишката. Въпреки това, когато се опитам да получа амплитуда, тя не показва нищо. Предполагам, че поради твърде голямата амплитуда, но когато го разделя на константа като 15, същата равнина се показва отново. Дали това е защото използвах GL_TRIANGLE_STRIP
?
matrix
стойностите са между 0 и 1? Трябва, ако ги въведете вglColor3f
. Можете ли да проверите това? - person Sga   schedule 12.06.2015GL_POINTS
сglPointSize(50)
- person Sga   schedule 12.06.2015matrix[][]
? - person Sga   schedule 12.06.2015