2016-07-13 37 views
7

Hesaplamak için yoğun bir hesaplama sırasında 3B sahneyi görüntülemek için yeni Qt 3D API kullanıyorum. Bu sahne sadece kullanıcı girişine bir cevap olarak değişir. Ancak, Qt 3D'nin varsayılan davranışı, sahnenin kare hızını, bu durumda kabul edilemez miktarda kaynak tüketen yüksek bir sabit değere kilitler gibi görünüyor.Kare hızını Qt 3D'de nasıl kontrol edebilirim?

Qt 3D kare hızını kontrol etmek için bir yol var mı? İdeal olarak, yalnızca sahnede değişiklikler yapıldığında yeni bir çerçeve oluşturmak istiyorum, ancak daha küçük bir sabit değere indirmek de yeterli olacaktır. Qt 3D belgeleri seyrekdir ve bunlardan herhangi birini yapmanın bir yolunu bulamadım.

Düzenleme: bulurum ve nasıl kök düğümü ve çerçeve grafiğine QRenderSettings::OnDemand uygulamak başardı, ama Qt 5.7 kullanıyorum olarak this, olması gerektiği ima rağmen görünüşte, bir etkisi yoktur. Bu konuda herhangi bir ek girdi çok hoş olurdu (sadece bir yorumda bulunsa bile).

Düzenleme 2: Fraps'u yükledikten ve kare hızını doğrudan ölçtükten sonra, görüntülerin QRenderSettings :: OnDemand uygulamasında olduğu gibi yalnızca gerekli çerçeveleri oluşturduğu görülür. Bu olmadan, kare hızı, ekranımın yenileme oranı olacak şekilde sabit bir 60 fps'de kalır. Ancak,, program, 3D pencerenin gösterilip gösterilmediğine bakılmaksızın, Qt 3D etkinken büyük miktarda CPU süresi tüketmeye devam ediyor. Bunun kare hızıyla ilgili olmayan ayrı bir Qt 3D sorunu olduğunu düşünmeye başladım ve buna göre yeni bir soru açacağım.

+0

Grafiklerinizle bir ilgisi olmadığından emin misiniz? –

+1

Hangi fps çalışıyor ve tercihiniz için en yüksek fps hangisi olurdu? –

+0

Bu, bir göz atmaya değer olabilir. Muhtemelen çözmeyecek, ama problem üzerine biraz ışık tutabilir. http://stackoverflow.com/questions/36181532/qt-qapplication-framerate-drop-when-maximizing-window –

cevap

2

Bunu yapmanın en iyi yolu, başlık dosyasına <FrameRateRange> sınıfı FrameRateRange kullanmak muhtemelen. Bu sınıfta iki genel işlev vardır: FrameRateRange() ve FrameRateRange(qreal minimumFrameRate, qreal maximumFrameRate). qreal, ikinci işlevdeki her iki parametrede görünen parametredir. Bu, <QtGlobal> başlık dosyasında bildirilen genel bir typedef dur. minimum ve maximum, saniyede kare kare hızlarıdır. here ve here'dan daha fazla bilgi.

+1

FrameRateRange, Qt 3D ile tamamen ilgisiz gibi görünüyor, bu yüzden bu cevabı kabul edemem, ancak cevap verebilecek tek kişi olduğunuzdan ve sorgunuz, sorun hakkında daha fazla bilgi sahibi olmam için bana yardımcı oldu, muhtemelen size kısa bir ödül vereceğim . –