zoukankan      html  css  js  c++  java
  • 硬件遮挡查询

    先放下代码,未完待续。

     TraversalStack.Push(hierarchy.Root);
    
     while ( not TraversalStack.Empty() or not QueryQueue.Empty() ) {   
        //--PART 1: process finished occlusion queries   
        while (not QueryQueue.Empty() and [ResultAvailable(QueryQueue.Front()) or TraversalStack.Empty()] ) {    
            node = QueryQueue.Dequeue();     
            // wait if result not available    
            visiblePixels = GetOcclusionQueryResult(node);   
            if (visiblePixels > VisibilityThreshold) {     
                PullUpVisibility(node);       
                TraverseNode(node); 
            }  
        }    
        //--PART 2: hierarchical traversal    
        if ( not TraversalStack.Empty() )  {    
            node = TraversalStack.Pop();    
            if ( InsideViewFrustum(node) ) {      
                // identify previously visible nodes      
                wasVisible = node.visible and (node.lastVisited == frameID - 1);      
                // identify nodes that we cannot skip queries for       
                leafOrWasInvisible = not wasVisible or IsLeaf(node);     
                // reset node's visibility classification    
                node.visible = false;   
                // update node's visited flag   
                node.lastVisited = frameID;  
                // skip testing previously visible interior nodes  
                if ( leafOrWasInvisible ) {      
                    IssueOcclusionQuery(node);     
                    QueryQueue.Enqueue(node);    
                }        
                // always traverse a node if it was visible      
                if ( wasVisible ) TraverseNode(node);      
            }    
        }  
    }  
    
    TraverseNode(node) {   
        if ( IsLeaf(node) ) Render(node);   
        else TraversalStack.PushChildren(node);  
    }    
    
    PullUpVisibility(node) {    
        while (not node.visible) {     
            node.visible = true;    
            node = node.parent;    
        }  
    } 
    

      

  • 相关阅读:
    JS调用App方法及App调用JS方法
    提升用户体验之 选用合适的鼠标光标
    js仿QQ拖拽删除
    Linux下安装 mongodb
    QQ分享-定制分享卡片
    js判断浏览器语言实现网站国际化
    js复制内容到剪切板
    为什么会有堆内存和栈内存之分
    Avro实现RPC
    zookeeper学习day01
  • 原文地址:https://www.cnblogs.com/redips-l/p/12220830.html
Copyright © 2011-2022 走看看