OpenGL的纹理加载问题

<p>这是一个非常模糊的问题,所以请随时澄清这个项目什么。 P&gt; </p><p>我工作的一个非常大的应用程序,并在最近一个非常令人困惑的bug也随之而来,关于纹理。一些我们正在加载被加载的纹理 - 我通过代码已经加强,并且它运行 - 但所有的OpenGL渲染这些纹理是一个奇怪的粉红色/白色条纹纹理。 P&gt; </p><p>你有什么建议,甚至开始调试这种情况? P&gt; </p><ul> <li>在该项目是多线程的,但一个互斥确保所有OpenGL调用都不会被别的中断。 LI&gt; </li><li>在被加载一些纹理,有些则不是。他们在完全相同的方式全部调入。 li&gt; </li><li>在我确信,所有纹理存在 li&gt; </li><li>在“粉红/白”纹理肯定是加载到内存中 - 它们变得可见后不久,我打开任何其它质地转换成OpenGL li&gt; ul&gt; <p>我很困惑,而且不知道还有什么可以是错误的。有没有办法,可以glTexImage后调用一个OpenGL的命令,这将迫使纹理变得可用? P&gt; </p><p>编辑: 这不是失败的命令,它主要是一个时间问题。粉红色/白色的纹理展现了一段时间,直到装入更多的纹理。这几乎就像如果贴图排队,而排队只是在暂停一段时间。 P&gt; </p><p>下一页编辑:我得到了glIntercept日志正常工作,而这也正是它输出(整个程序崩溃之前) P&gt; </p><p> http://freetexthost.com/1kdkksabdg P&gt; </p><p>下一页编辑:我知道的纹理在OpenGL内存中加载的事实,但出于某种原因,他们并没有呈现在节目本身。 P&gt;
</p></li></ul>

152 浏览 1 回复
  纹理   gt   一个   加载   opengl  

回复

    <p>请检查您的纹理坐标。如果它们设置错了,你能看到的只是一个或两个纹理元素映射到整个元。请记住,OpenGL是一个状态机。检查您是否正在改变纹理坐标状态在错误的时间。你可能会设置在代码后面点的纹理坐标,那么当你回到重绘这些元素的状态是可以接受你的纹理映射到代码。 P&gt; </p><p>如果这仅仅是其中的纹理加载OpenGL调用不及时执行的计时问题,和你的线程代码是正确的,请尝试载入纹理后面添加一个调用glFlush()。 glFlush()会导致所有待处理的OpenGL命令来执行。 P&gt; </p><p>如果您的纹理着色不当极有可能您正在加载RGB的顺序错误。请确保您glTexImage2D你使用正确的枚举您的图像格式。确保组件的数量是正确的,你要在格式参数权的RGB像素的顺序。 P&gt; </p><p>虽然可能不是与您的纹理显示错了,OpenGL的不支持多线程的抽奖所以一定要确保你没有做任何的绘图工作,在不同的线程比一个拥有上下文。 P&gt; </p><p>编辑:你有一个参考的渲染器,所以你可以验证被加载图像像素的预期?我强烈建议写一个小程序来加载,然后立即保存像素到一个文件,这样就可以确保你得到正确的纹理效果。 P&gt;
    </p>

    孟博

相关提问


友情链接: