WPF项目的OpenGL版本错误
我有两个独立的WPF项目。 我的目标是:改变项目B,使其具有与项目A相同的OpenGL对象实例版本 两者都使用以下行在某个点实例化变量“gl”:WPF项目的OpenGL版本错误,wpf,visual-studio,xaml,opengl,sharpgl,Wpf,Visual Studio,Xaml,Opengl,Sharpgl,我有两个独立的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”,两个项目均采用
OpenGL gl = args.OpenGL;
设置断点并检查“gl”的对象属性后,我在项目a中看到以下内容:
Version = "4.4.13084 Compatibility Profile Context 14.301.1001.0"
但在项目B中,我看到了以下内容:
Version = "1.1.0"
关于“args”,两个项目均采用以下方法实例化总账:
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文件确定,因为我的项目是从VisualStudio运行的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>
比例:
1.
自动的
渲染模式:
立即的
保留
多边形模式:
要点
线
多边形
项目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,但是,我不知道哪些文件最适合共享。好吧,“Project B”要求一个明确的OpenGL版本,“Project A”不需要。@AndonM.Coleman真的吗?你看过版本了吗?我在中添加了它,以强制将其设置为版本4,而不是版本1。请不要因为你不知道答案就评论和否决我的问题。你到底有什么问题?我从来没有否决过你的问题,尽管你的态度很诱人。我只是尽力帮助你,这就是我得到的感谢。如果你希望在这个网站上得到帮助,你真的应该调整你的态度。在这些项目中有没有其他的区别,比如引用了哪些程序集,或者导出到输出目录的本机DLL?嗯,在我回答了你上次没有回复的评论之后,我的最后一个问题就被否决了。没有人回答,我这里有一个合法的问题,我正在努力解决。正如我在问题中所说,项目A有版本4,项目B有版本1。我的显式OpenGL版本请求是试图将项目B强制为版本4。这没有改变任何事情。