Я хочу создать несколько потоков для загрузки объектов с текстурами, но это не сработает. Я читал, что я должен создать новый контекст OpenGL в каждом потоке, но когда я это сделаю, программа выйдет из строя. Это другой способ сделать это?Загрузка многопоточных объектов в OpenGL
Я использую freeGLUT. Эти функции я хочу использовать в потоках:
glGenBuffers()
glBindBuffer()
glBufferData()
glGenTextures()
glBindTexture()
glTexImage2D()
glGenerateMipmap()
glTexParameteri()
glTexEnvi()
Итак, как создать новый контекст в GLUT? Я не хочу перестраивать свои функции загрузки. – Klapek
GLUT не обеспечивает назначенное управление контекстом. Он, безусловно, выполняет некоторые функции при создании окна, но не подвергает его API. Если вы действительно этого хотите, вы можете напрямую использовать WGL/GLX/AGL, или SDL/glfw/etc. Однако вы этого не сделаете; он не даст вам преимуществ в производительности, совсем наоборот. Кроме того, очень мало вещей можно разделить между контекстами, и состояние явно не является одним из них, поэтому ваши 'bind' и' texenv' не могут быть выполнены в нескольких потоках. – keltar
@keltar, но буферный объект может быть общим, что вам нужно для многопоточной загрузки. –