gpt4 book ai didi

objective-c - glUseProgram 在 iOS 中不起作用

转载 作者:行者123 更新时间:2023-11-28 19:21:49 25 4
gpt4 key购买 nike

当我使用 glUseProgram 设置一个 prgram 时,然后通过 glGetIntegerv(GL_CURRENT_PROGRAM, &pid) 检查当前程序,但是 pid 返回 0。所以我不能使用这个着色器。着色器已编译并链接正常。

代码:

[EAGLContext setCurrentContext:context1];
glBindFramebuffer(GL_FRAMEBUFFER, Framebuffer1);

//there have many render option use shader1;
//and the shader1 is work normal.
glBindRenderbuffer(GL_RENDERBUFFER,Renderbuffer1);
[context1 presentRenderbuffer:GL_RENDERBUFFER];
glFlush();

[EAGLContext setCurrentContext:context2];
glBindFramebuffer(GL_FRAMEBUFFER, Framebuffer2);

//than gluseprogram(shader1) ,
//check current shader return 0;
//but no glError
glBindRenderbuffer(GL_RENDERBUFFER,Renderbuffer2);
[context2 presentRenderbuffer:GL_RENDERBUFFER];

为什么我不能重新设置着色器?

最佳答案

您正在使用 2 个 GL 上下文,而 shader1 可能是在上下文 1 中编译和链接的,所以这就是它起作用的原因。您需要共享它(使用一些特定于平台的 API)才能在另一个上下文(如 context2)中使用它,您不能在没有明确告诉 API 与另一个上下文共享它的情况下使用它。

这就是它不起作用的原因。

另一种选择是在两种上下文中编译和链接着色器。

关于objective-c - glUseProgram 在 iOS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com