У меня есть простая сетка 16 x 16, к которой я применяю одну текстуру. Файл текстуры разделен на четыре части - каждый цвет другой. По умолчанию каждый квадрат окрашен в зеленый цвет (верхняя левая часть файла). Если вы нажмете квадрат, примените красную часть (верхнюю правую часть файла). Теперь я хочу, чтобы квадрат полностью исчез при нажатии. Я предполагаю, что могу использовать прозрачную текстуру, но я надеялся, что мне не придется этого делать, чтобы не загружать/перезагружать два разных файла текстур.Как я могу применить текстуру к части модели?
Вот код, я использую, чтобы обновить текстуры VBO:
//I don't bother offsetting my changes. I simply update the 'UVs'
//array and then copy the entire thing to the floatbuffer.
public void updateTexture(int offset)
{
//populate the texture buffer
//fbtex is a floatbuffer (16x16x8 in size). UVs is an array, same size.
fbtex.put(UVs);
fbtex.rewind();
glBindBuffer(GL_ARRAY_BUFFER, vboHandles.get(TEXTURE_IDX)); //the texture data
glBufferSubData(GL_ARRAY_BUFFER, offset, fbtex);
fbtex.clear(); //don't need this anymore
}
ВБО будет содержать до 256 экземпляров моих коллег-ords для Грин:
public float[] UV_0 = { 0.02f,0.02f,
0.02f,0.24f,
0.24f,0.24f,
0.24f,0.02f};
или меньше, если включает в себя несколько моих кодов для красных:
public float[] UV_1 = { 0.24f,0.02f,
0.48f,0.02f,
0.48f,0.24f,
0.24f,0.24f};
Есть ли что-нибудь, что я могу сделать для данных VBO, чтобы нарисовать раздел невидимый? Таким образом, объекты в фоновом режиме можно увидеть, например?
Причина использования текстур заключается в том, что я хотел иметь зеленый цвет, но с некоторыми деталями до затенения и т. Д. Но, конечно, для окраски неба или воды я буду использовать RGBA - спасибо за напоминание! Мне нужен лучший графический редактор, который позволит включать прозрачные разделы в мои текстуры. В конечном итоге они мне понадобятся. Однако для этого решения то, что я действительно искал, было способом избежать создания невидимых вершин. Мое решение немного отличается от того, что предложил javac в том, что я использую glDrawElements - поэтому я просто пропускаю те элементы, которые мне не нужны. –