Я только что закончил свою карту высот, визуализированную с помощью треугольной полосы в строке. Мое решение было:Карта высот текстуры на основе индексов (OpenGL/GLSL)
height=data[k];
coords.push_back((float)col);
coords.push_back((float)(height/heightscale));
coords.push_back((float)row);
k+=3; //red is enough, im using greyscale
и индексы для полосы:
for(int row=0;row<infoheader.biHeight-1;row++)
{
for(int col=0;col<infoheader.biWidth;col++)
{
indexes.push_back((row+1)*infoheader.biWidth+col);
indexes.push_back(row*infoheader.biWidth+col);
}
}
Я использую VertexArrayObject и drawelements в петле на строку. Теперь я использую его с одной окраской шейдеров, основанной на высоте, но я хочу, чтобы он совпадал с текстурами (также на основе высоты, но все еще не является моей проблемой)
Я хочу, чтобы текстура была на 2 треугольниках, образующих квад,
0,1-1,1
| /|
|/|
|/ |
0,0-1,0
... но я действительно не имею ни малейшего представления о том, как осуществить это, я прочитал все темы по этому поводу, но они не работают (только сплошной цвет появился или вся карта была черной) ,
Итак, можно ли создать массив только для первого «квадрата» (2 треугольника) и текстурирует всю карту на основе этого, например, увеличивая индексы? Если да, то как я могу это сделать. И еще один: как я могу наложить 1 текстуру поверх всей карты, масштабируя ее по ландшафту.
Я мог бы сделать их с помощью одного квадрата или треугольника с двумя треугольниками, но не для ~ 3 000 000 треугольников.
Основная проблема заключается в индексировании, потому что, если я прав, он рисует не только положение вершины на основе индексов, но и координаты цветов и текстур.
моя карта: http://kepfeltoltes.hu/view/130827/1094341850Untitled_www.kepfeltoltes.hu_.png Я знаю, что это довольно «перегруженный» вопрос, но я до сих пор не нашел правильный путь. EDIT: Я хочу текстурировать текстуры.
Ваш гений!: D Я никогда не думал, что мне нужно вычислить texcoords в шейдере, но он работает !!! и даже мне не нужно добавлять еще один vbo, массив или вектор. Большое спасибо!: D –
http://kepfeltoltes.hu/view/130827/726256227Untitled2_www.kepfeltoltes.hu_.png еще раз спасибо !;) –
Вам не обязательно. Вы могли бы также моделировать свою местность в каком-нибудь инструменте DCC, таком как Blender, создавать UV-объекты там, экспортировать UV-файлы, загружать их вместе с вашими позициями и напрямую их размещать из объекта-буфера. Ах и BTW, я уверен, черт возьми, не гений. ;) – thokra