2008-08-25 12 views
3

Aşağıdaki kod, örneğin bir MacBook üzerinde Intel tümleşik video kartlarındaki arka arabelleğe veri yazmaz. ATI kartlarında, iMac gibi, arka tampona çizer. Genişlik ve yükseklik doğru (ve 800x600 tampon) ve m_PixelBuffer 0xAA00AA00 ile doğru şekilde doldurulur.OpenGL glDrawPixels'in bazı ekran kartlarında çalışmasını nasıl engelleyebilir?

Şimdiye kadarki en iyi tahminim glWindowPos setine ihtiyaç duyan bir şey olduğu. Şu anda (veya raster pozisyonu) ayarlamıyorum ve GL_CURRENT_RASTER_POSITION aldığımda ATI kartındaki varsayılanın 0,0,0,0 ve Intel'in 0,0,0,1 olduğunu fark ettim. ATI kartındaki raster pozunu 0,0,0,1 olarak ayarladığımda, Intel kartla aynı sonucu elde edersem, hiçbir şey arka tampona çizilmez. Kaybettiğim bazı dönüşüm durumu var mı? Bu bir 2D uygulamasıdır, bu yüzden görünüm dönüşümü çok basit bir glOrtho'dur.

glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer); 

Sağladığım daha fazla bilgi için lütfen sorunuz. Oldukça fazla bir OpenGL ve Mac newb var, bu yüzden yeterli bilgi verip vermediğimi bilmiyorum.

cevap

2

Intel'den OpenGL uygulamalarıyla ilgili her zaman sorunlarım vardı, ancak bu sefer sizin sorununuz olduğundan emin değilim. Bence bayt düzeninde bazı sorunlar yaşıyorsun. Bunu, ambalaj ve renk siparişi için farklı sabitlerle denemeyi okuyun ve çekinmeyin.

http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_25.html

Ben OSX rehber olduğunu biliyorum, muhtemelen diğer platformlar için başka sitelerde de benzer OpenGL makaleler bulabilirsiniz. Bu geçerli olmalı.

1

Hep Bu Endişelendiğim ne tür uygulamaları Intel

gelen OpenGL ile sorunları yaşadım, ama onlar temel olarak bir şeyi berbat ediyorum inanmak zor bir zaman glDrawPixels ve ayrıca, raster konum vektörünü değiştirerek sorunu "çoğaltabildiğimden", bu benim hatam olduğunu ve temel bir şeyi kaçırdığımı düşünmemi sağlıyor.

Biraz bayt düzene Sorunlar koşuyoruz düşünüyorum İlk hevesim oldu ve hiçbir sonuç farklı ambalaj denedim

. Ayrıca, arabelleği hiçbir zaman kullanılmadan kullanılabilir bir alfa sunacak değerlerle paketlemeyi denedim. Bu yüzden raster pos ağacının havlamasını yapıyorum ama hala% 100 emin değilim. Fark yaratan yalnızca Intel Mac'leri hedeflediğimi unutmayın.

Bağlantı için teşekkürler, iyi bir okuma oldu ve gelecekteki referans için uzak sıkışmak iyi oldu. Ben upmod ettik ama ben 3 tane daha fazla puan alana kadar alamıyorum :)

1

glDrawPixels gibi temel bir fonksiyonun çalışmadığı pek olası değil. Eğer GL_RGB veya biçimi için GL_RGBA ve GL_UNSIGNED_BYTE veya türü için GL_FLOAT gibi bazı gerçekten basit ayarları denediniz mi? Eğer değilse, sorununuzu çoğaltan mümkün olan en küçük programı bizimle paylaşır mısınız?

1

Varsayılan tarama konumu (0,0,0,1) olmalıdır, ancak emin olmak için sıfırlayabilirsiniz.

Sadece) (glDrawPixels çağırmadan önce, şimdiki tarama pozisyonu geçerli olup, bu söylemeliyim

GLint valid; 
glGet(GL_CURRENT_RASTER_POSITION_VALID, &valid); 

deneyin. Eğer öyleyse, o zaman bu senin problemin değil.