0

以下のコードを使用して、オブジェクトにテクスチャをロードしました。

- (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));
}

テクスチャが適切にマッピングされています。

ここで2つのテクスチャをロードする必要があります。また、テクスチャは一定の時間間隔で変更される必要があります。出来ますか?誰かが私にここから進む方法を教えてもらえますか?

*更新: 関数ldText2を使用して、Image2で別のテクスチャをロードしました。そして、各「更新ビュー」で更新します。これで、同じオブジェクトに2つのテクスチャが表示され、「update」関数が呼び出されるたびに変更されます。「Update」関数が呼び出されるたびに、texture1とtexture2を交換します。しかし、問題は時間間隔です!ゆっくり起こしてほしい。このための時間間隔を設定するにはどうすればよいですか?*

4

1 に答える 1

0

デフォルトでは、GLKViewController は、preferredFramesPerSecondプロパティに基づいて update を呼び出すアニメーション ループを提供します。(実際に使用されたレートはframesPerSecondプロパティにあります)。

優先レートを設定することである程度の制御を得ることができますが、表示を数分の 1 秒以上静止させたい場合は、アニメーション ループをオフにする可能性が高くなります。これを行うには、pausedプロパティをYESに設定し、オーバーライドしてNOresumeOnDidBecomeActiveを返します。次に、明示的に行うか、ビューのプロパティがYESに設定されていることを確認してビューを無効にすることにより、適切なタイミングでビューで gets が呼び出されるようにする必要があります。displayenableSetNeedsDisplay

他の理由でアニメーション ループをアクティブに保ちたい場合は、遅延セレクター実行を使用するという Matic Oblak の提案を適用して、テクスチャを変更するか、更新メソッドをトリガーしてテクスチャを変更するフラグを設定できます。

于 2013-05-12T07:20:17.430 に答える