簡體   English   中英

定期在單個圖像上加載兩個紋理-GLkit openglES

[英]Load a two texture for a single image at a regular interval of time - GLkit openglES

我使用以下代碼將紋理加載到對象上。

- (void)ldText:(UIImage *)Image
{
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    CGImageRef cgImage = Image.CGImage;
    float Width = CGImageGetWidth(cgImage);
    float Height = CGImageGetHeight(cgImage);
    CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, CFDataGetBytePtr(data));
}

紋理已正確映射。

我現在需要加載兩個紋理。 並且紋理應該定期更改。 可能嗎? 有人可以指導我如何從這里繼續嗎?

* 更新: 我使用功能ldText2使用Image2加載了另一個紋理。 並在每個“更新視圖”中對其進行更新。 現在,我在同一個對象上獲得了兩個紋理,並且每當調用“更新”函數時都將對其進行更改。 每次調用“更新”功能時,我都會互換Texture1和Texture2。 但是問題是時間間隔! 我希望它發生的慢。 如何為此設置時間間隔? *

默認情況下,GLKViewController為您提供了一個動畫循環,該循環基於preferredFramesPerSecond屬性調用更新。 (實際使用的速率在framesPerSecond屬性中)。

您可以通過設置首選速率來獲得一些控制權,但是如果您希望顯示器保持靜態超過一秒鍾的時間,則更有可能希望關閉動畫循環。 為此,請將paused屬性設置為YES ,並重寫resumeOnDidBecomeActive以返回NO 然后,您需要確保在適當的時間在視圖上調用display ,方法是顯式地執行此操作,或者確保將視圖上的enableSetNeedsDisplay屬性設置為YES ,並使視圖無效。

如果由於其他原因要使動畫循環保持活動狀態,則可以應用Matic Oblak關於使用延遲選擇器執行的建議來更改紋理,或設置標志以觸發update方法來更改紋理。

暫無
暫無

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

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