им пытается получить мульти текстурирования работы и до сих пор есть miltiple текстуры для загрузки с помощью этой функцииPyOpenGL режим смешивания установите многопроходную текстуру
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), но это ничего не делает.
То, что я хотел бы сделать, это добавить пиксели из двух проходов вместе
Как будет идти об этом?
Это не работает для меня, я, похоже, получаю равномерное потемнение tex1 или любую другую последнюю текстуру, которая должна быть нарисована. –
Странно, текстуры должны быть модулированы (т. Е. Компонентное умножение). Можете ли вы загрузить файлы изображений? Вы уверены, что они загружены правильно? (Я не выполняю проверку ...) – kloffy
Кроме того, если вы выполняете рендеринг в непосредственном режиме, вам нужно использовать 'glMultiTexCoord (GL_TEXTURE0, ...)' и 'glMultiTexCoord (GL_TEXTURE1, ...)' для указания текстуры координаты для каждой текстурной единицы. – kloffy