簡體   English   中英

在OpenGL中動態加載紋理的好方法是什么?

[英]What is a good way to load textures dynamically in OpenGL?

目前我正在第二個線程上將圖像加載到內存中,然后在顯示循環期間(如果需要紋理加載),加載紋理。

我發現我無法在第二個線程上加載紋理,因為OpenGL不喜歡它; 也許這是可能的,但我做錯了 - 所以如果實際上可行,請糾正我。

另一方面,如果我的失敗是有效的 - 如何在不中斷渲染循環的情況下加載紋理? 目前紋理需要大約1秒來從內存加載,雖然這不是一個主要問題,但它可能會對用戶造成輕微的刺激。

您可以使用您希望讀取文件的任何工具,在任何您喜歡的線程上將紋理從磁盤加載到內存。

但是,當您將其綁定到OpenGL時,需要在與該OpenGL上下文的呈現相同的線程上處理它。 話雖這么說, 這個討論表明在第二個線程中使用PBO是一種選擇,並且可以加速該過程。

您當然可以在任意數量的線程中將紋理從磁盤加載到RAM中,但由於Reed的答案中提到的原因,OpenGL不會在多個線程中上傳到VRAM。

鑒於從磁盤加載是最慢的部分,這就是你可能想要線程的位。 加載線程構建要上載的紋理隊列,然后該隊列由擁有GL上下文的線程使用(但請注意您通過各種線程訪問該隊列)。 您還可以考慮每幀上傳N個紋理的非線程方法,其中N是一個不會使渲染速度降低太多的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM