1

我有两个独立的 WPF 项目。我的目标:将项目 B 更改为与项目 A 具有相同的 OpenGL 对象实例版本。

两者都在某个时刻使用以下行实例化变量“gl”:

OpenGL gl = args.OpenGL;

设置断点并检查其对象属性的“gl”后,我在项目 A 中看到以下内容:

Version = "4.4.13084 Compatibility Profile Context 14.301.1001.0"

然而在项目 B 中,我看到以下内容:

Version = "1.1.0"

关于 'args' 两个项目都通过以下方法实例化 gl:

private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args)

这两个项目都使用以下方法调用该方法:

((SharpGL.WPF.OpenGLControl)(target)).OpenGLInitialized += new SharpGL.SceneGraph.OpenGLEventHandler(this.OpenGLControl_OpenGLInitialized);

请注意,'args' 并未从此处显式传入。我认为必须在更深的上下文中调用函数,例如 OpenGLEventHandler。但是,我注意到 args 也是该函数的参数。

public delegate void OpenGLEventHandler(object sender, OpenGLEventArgs args);

我无权访问 OpenGLEventHandler 的源代码,因为它位于 SceneGraph.dll 中

我想知道 args 变量是否由 .config 或 .xaml 文件确定,因为我的项目是从 Visual Studio 运行的 WPF。但是,关于 OpenGL 的文件并没有太大区别。

项目 A 的 MainWindow.xaml:

<Window x:Class="ObjectLoadingSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Object LoadingSample" Height="600" Width="800"
        xmlns:sharpGL="clr-namespace:SharpGL.WPF;assembly=SharpGL.WPF">
    <Grid>
        <DockPanel>

            <ToolBarPanel DockPanel.Dock="Top">
                <Menu>
                    <MenuItem Header="_File">
                        <MenuItem x:Name="fileOpenItem" Header="_Open..." Click="fileOpenItem_Click" />
                    </MenuItem>
                </Menu>
            </ToolBarPanel>

            <ToolBarTray DockPanel.Dock="Top">
                <ToolBar>
                    <Label Target="{Binding ElementName=textBoxScale}">Scale: </Label>
                    <TextBox x:Name="textBoxScale" Width="60" IsEnabled="False">1</TextBox>
                    <CheckBox x:Name="checkBoxAutoScale" IsChecked="True" IsEnabled="False">Auto</CheckBox>
                    <Separator />
                    <Label Target="{Binding ElementName=comboBoxRenderMode}">Render Mode: </Label>
                    <ComboBox x:Name="comboBoxRenderMode" Width="100" SelectedIndex="1">
                        <ComboBoxItem>Immediate</ComboBoxItem>
                        <ComboBoxItem>Retained</ComboBoxItem>
                    </ComboBox>
                    <Label Target="{Binding ElementName=comboBoxPolygonMode}">Polygon Mode:</Label>
                    <ComboBox x:Name="comboBoxPolygonMode" Width="100" SelectedIndex="2" SelectionChanged="comboBoxPolygonMode_SelectionChanged">
                        <ComboBoxItem>Points</ComboBoxItem>
                        <ComboBoxItem>Lines</ComboBoxItem>
                        <ComboBoxItem>Polygons</ComboBoxItem>
                    </ComboBox>
                </ToolBar>
            </ToolBarTray>

            <sharpGL:OpenGLControl x:Name="openGlCtrl"
            OpenGLDraw="OpenGLControl_OpenGLDraw" OpenGLInitialized="OpenGLControl_OpenGLInitialized" 
            RenderContextType="FBO" Resized="OpenGLControl_Resized" />
        </DockPanel>
    </Grid>
</Window>

项目 B 的 MainWindow.xaml

<Window x:Class="ProjectBeta.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="800" Width="800">
  <Grid>
    <sharpGL:OpenGLControl OpenGLDraw="OpenGLControl_OpenGLDraw" OpenGLVersion="OpenGL4_3"  OpenGLInitialized="OpenGLControl_OpenGLInitialized" DrawFPS="True" Margin="-3,0,3,0" />
  </Grid>
</Window>

还有其他文件,例如 App.config、App.xaml 和 Settings.settings,但是,我不知道共享哪些文件最有用。

4

0 回答 0