Pergunta

Eu tenho um número indefinido de contexto de apresentação e cada um irá exibir uma textura. Quando eu chamar glGenTextures eu recebo o mesmo nome retornado em todos os contextos de exibição. Isso vai funcionar? Mesmo que tenham o mesmo nome que ainda armazenar e exibir diferentes texturas? Se não o que deve fazer para resolver isso?

Foi útil?

Solução

Obtendo o mesmo nome de glGenTexture e tendo a mesma textura exibida não é a mesma coisa.

nomes

textura são apenas números inteiros, a critério de um contexto, geralmente começando com 1, e incrementando com cada glGenTexture, mas não é necessariamente assim. Uma implementação não é obrigado a trabalhar assim (embora a maioria faz). No entanto, você poderia, em teoria também ficar mais ou menos número "aleatório", como por exemplo, um número inteiro que incrementos para qualquer tipo de objeto (ou seja, não apenas texturas, mas também buffers e shaders), ou até mesmo um endereço de ponteiro de 32 bits em espaço de endereço do motorista, ou alguma outra coisa isotéricos. Não há nenhuma exigência de que um nome deve ser algo específico.

Em legado OpenGL, você poderia até mesmo fazer seus próprios nomes em vez de usar glGenTexture, mas que já não é legal agora. Eu não tenho certeza o que eles pensavam quando isso era permitido, mas de qualquer maneira ...:)

O mesmo número (nome) em um contexto diferente será geralmente uma textura diferente, ou possivelmente nenhuma textura em tudo. Então, se você vê a mesma textura em contexto diferente com o mesmo nome textura, então você quer ter contextos compartilhados, ou o motorista é buggy.

Note que se você usar wglCreateContextAttribsARB, o segundo parâmetro é o identificador de um contexto já existente (ou nulo). Se você fornecer um identificador de contexto aqui, você vai ter contextos compartilhado mesmo sem glShareLists chamando explicitamente. Talvez isso é o que aconteceu por acidente.

Outras dicas

Texturas não são (por padrão) compartilhado entre contextos - você tem que permitir que isso explicitamente, mas como você fazer isso é específico da plataforma

.

No win32, é wglShareLists, e na maioria das outras plataformas é especificado quando você criar o contexto (por exemplo., Com o parâmetro share para aglCreateContext no OS-X).

Para o meu conhecimento que não permitiu qualquer participação textura. no entanto, a mesma textura está sendo exibido em todos os contextos de exibição.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top