Я пытаюсь заставить работать мультитекстурирование, и до сих пор у меня есть несколько текстур для загрузки с помощью этой функции.
def loadTexture(name):
img = PIL.Image.open(name) # .jpg, .bmp, etc. also work
img_data = numpy.array(list(img.getdata()), numpy.int8)
id = glGenTextures(1)
glPixelStorei(GL_UNPACK_ALIGNMENT,1)
glBindTexture(GL_TEXTURE_2D, id)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img.size[0], img.size[1], 0, GL_RGB, GL_UNSIGNED_BYTE, img_data)
return id
И я могу установить текстуру для использования с этим кодом
glBindTexture(GL_TEXTURE_2D, 1)
glEnable(GL_TEXTURE_2D)
Моя первая попытка была такой:
glBindTexture(GL_TEXTURE_2D, 1)
glEnable(GL_TEXTURE_2D)
glBegin(GL_TRIANGLES)
....
glEnd()
glBindTexture(GL_TEXTURE_2D, 3)
glEnable(GL_TEXTURE_2D)
glBegin(GL_TRIANGLES)
....
glEnd()
Итак, я визуализирую полигоны дважды и каждый раз выбираю другую текстуру, похоже, это работает так же, как вызов glBindTexture(GL_TEXTURE_2D, n) выберет соответствующую текстуру, и она будет отображаться, но смешивание как таковое не происходит, я просто увидеть последнюю выбранную текстуру в рендере. Я пытался добавить glEnable(GL_BLEND), но это ничего не дало.
Что я хотел бы сделать, так это добавить пиксели двух проходов вместе
Как бы я это сделал?