首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道何时在GPU内存上分配了数据

如何知道何时在GPU内存上分配了数据
EN

Stack Overflow用户
提问于 2012-06-05 21:56:50
回答 2查看 225关注 0票数 0

如何确定是否已在three.js上的GPU内存上分配了缓冲区?

当我第一次调用renderer.render()时,它渲染没有纹理的网格(看起来是黑色的),这让我认为当调用这个函数时,纹理在GPU内存中是不可用的。5-10次调用后,纹理出现在屏幕上。

为什么这很重要?当视图需要更新时,我触发了渲染函数。如果加载了新模型,则渲染函数应等待,直到所有数据都可用于渲染。

如何确保所有数据都已准备好在GPU上使用?

伪代码:

代码语言:javascript
复制
textures = LoadTextures()
material = CreateMaterial(textures)
geometry = loader.load( "path/to/file" )

if( materialLoaded && geometryLoaded ) {
    needsUpdate = true
}

if( needsUpdate ) {
    renderer.render()
    needsUpdate = false
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-09 22:53:09

当image.onload被称为时,纹理在GPU 上可用。我在那里放置了一个标志,以确定给定的图像(作为纹理加载)是否已加载。

代码语言:javascript
复制
LITEV.Texture = function( src )
{
    [...]
    this.loaded = false;
}

LITEV.Texture.prototype =
{
    load : function( path, callback, callbackError )
    {
        image.onload = function () 
        {
            [...]
            texture.needsUpdate = true; 
            if ( callback ) 
            {
                callback( this ); 
            }
            this.loaded = true;
            [...]
        }
    },
    [...]
} 
票数 0
EN

Stack Overflow用户

发布于 2012-06-05 22:57:34

这似乎是一个问题,因为图像在渲染之前没有完全加载。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10898678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档