2012-02-24 48 views
0

私は、OpenGLをOpenGLにレンダリングするためのコントロールを作成するために、SharpGLをWPFで使用するためのチュートリアルに続きました。優れて、すべて正常に動作します。SharpGLとWPFを使用して透明な背景を作成する

しかし、SharpGL WPFコントロールの背後にあるビデオをレンダリングするので、レンダリングの背景が透明になるようにする必要があります。これについてどうすればいいですか?

コード:

<Window x:Class="MyProject.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sharpGL="clr-namespace:SharpGL.WPF;assembly=SharpGL.WPF" 
    Title="MainWindow" Height="600" Width="800" Loaded="Window_Loaded"> 
    <Canvas Height="580" Width="780" Name="CentreCanvas"> 
     <Image Canvas.Left="0" Canvas.Top="0" Height="565" Name="imageVideoControl" Stretch="Fill" Width="780" /> 
     <Image Canvas.Left="580" Canvas.Top="0" Height="150" Name="imageDepthControl" Stretch="Fill" Width="200" /> 
     <sharpGL:OpenGLControl OpenGLDraw="OpenGLControl_OpenGLDraw" Height="565" Width="780"></sharpGL:OpenGLControl> 
    . . . 
    </Canvas> 
</Window> 

private void OpenGLControl_OpenGLDraw(object sender, OpenGLEventArgs args) 
{ 
    // Get the OpenGL instance being pushed to us. 
    gl = args.OpenGL; 

    // Clear the colour and depth buffers. 
    gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); 

    // Reset the modelview matrix. 
    gl.LoadIdentity(); 

    // Move the geometry into a fairly central position. 
    gl.Translate(1.5f, 0.0f, -6.0f); 

    // Draw a quad. 
    gl.Begin(OpenGL.GL_QUADS); 

     // Set colour to red. 
     gl.Color(1.0f, 0.0f, 0.0f); 

     // Draw some quad... 
     . . . 
     . . . 

    gl.End(); 
} 

答えて

1

あなたにはありません。

OpenGLウィンドウはWPFウィンドウではありません。それらはWin32のHWNDです。また、OpenGLによって実行されるHWNDは、ウィンドウからウィンドウへの透過性に参加することはできません。

+0

あなたの回答には、私のビデオ出力をOpenGLビューの背景にレンダリングする方法はありますか? – bobble14988

+0

@ bobble14988:ビデオ画像を取得し、OpenGLにテクスチャとしてロードし、GLコマンドを使用して描画することができます。 –

関連する問題