2011-10-07 120 views
1

如果我使用標準NSWindow來承載所有窗口框架延伸的NSOpenGLView,窗口的兩個底角將自動變圓。Cocoa OpengGL:繪製紋理和圓角

當交換到NSBorderlessWindowMask我必須處理角落四捨五入。 我已經實現了一個透明的自定義NSWindow和一個舍入的自定義NSView,他們都工作正常。 之後,我通過將NSOpenGLCPSurfaceOpacity設置爲0來實現了透明NSOpenGLContext。 如果我爲OpenGL上下文設置了顏色背景,則該視圖將被正確繪製,並獲得所需的圓角。

但是,由於該應用程序是一個電影播放器​​,我需要繪製與每個電影幀對應的紋理。

當我這樣做時(使用glTexCoord2fglVertex2f)紋理被繪製到角落,因此圖像被繪製到圓角之外,我鬆開了窗口的圓角部分。

當窗口是標準的時,系統會做什麼,並且NSBorderlessWindowMask我似乎無法重現?

將紋理的角落畫到幀緩衝區的最佳方式是什麼?

回答

1

您可以將紋理應用到具有圓角的幾何圖形,在帶圓角的電影紋理上使用附加的alpha蒙版,或使用模板測試來四捨五入您的視口角。

+0

你有這些解決方案之一的樣本?因爲我對編程非常陌生,特別是對於OpenGL,我實際上並不知道如何實現你所建議的 – Andrea3000

+0

我已經知道了。我已經使用了一個額外的alpha蒙版。非常感謝您的幫助! – Andrea3000