在C#中,它告诉我如何没有返回浮点数的"Math.Cos"函数.双精度是你可以获得的唯一值,因此强迫你将它投射到浮点数.像这样:
float val = (float)Math.Cos(someVal);
我需要使用浮点数,因为我在Direct3D中做了严格使用浮点数的东西.浮点数在图形世界中更常见(因为它现在是),因为它们是32位.
C#中是否有任何功能我可以使用它只是简单地处理浮点数,如C++可以做?
我不想包装任何C++的东西,因为这需要在XNA和Linux上运行OpenGL.
注意:如果代码没有将double转换为float,那将会很不错.
当尝试使用单声道版本的System.Drawing.Bitmap对象在OSX 10.7.3上加载".bmp",".png"或".jpg"时,应用程序只会挂起.我没有得到任何错误,应用程序只是卡在Bitmaps构造函数上...
当我在(Arch)Linux或Windows上运行相同的代码时,一切正常.
public static void Main (string[] args)
{
using (var bitmap = new Bitmap("/....../image.bmp"))
{
}
Console.WriteLine ("Hello World!");// Never gets here...
}
Run Code Online (Sandbox Code Playgroud)
如果我在调试模式下暂停应用程序,它会打开"反汇编"窗口并显示它卡在这一行:
call Status System.Drawing.GDIPlus:GdiplusStartup (UInt64, GdiplusStartupInput, GdiplusStartupOutput)
Run Code Online (Sandbox Code Playgroud)
注意:在调试模式下暂停应用程序几次后,"Magically"在写入时开始工作.我承诺我没有更改任何代码.谁知道什么可以导致"System.Drawing.GDIPlus"挂起所以我知道如何避免它?是否有单声道的codex设置文件或可能有垃圾箱的东西?
我正在尝试用C#.NET和Mono编写优化代码,用于游戏.(是的,我有正当理由使用C#而不是C++).
我注意到C#似乎没有正确优化其运算符.运算符的运行速度是使用Vector4数学手动内联代码的两倍.以下是我在.NET 4.5中运行9999999次的一些简单基准测试:
// Test 1
for (uint i = 0; i != 9999999; ++i)// 230 MS
{
vector += vector2;
vector2 -= vector;
}
// Test 2
for (uint i = 0; i != 9999999; ++i)// 185 MS
{
vector = vector.Add(ref vector2);
vector2 = vector2.Sub(ref vector);
}
// Test 3
for (uint i = 0; i != 9999999; ++i)// 116 MS
{
vector.X += vector2.X;
vector.Y += vector2.Y;
vector.Z += vector2.Z;
vector.W += vector2.W;
vector2.X -= vector1.X;
vector2.Y …
Run Code Online (Sandbox Code Playgroud) 嗨,截至昨天,我能够通过WiFi构建并推送apk文件到ADT-1 Android电视设备.然后设备有更新,现在我不再能够连接到设备.我认为允许连接的端口号adb已经改变了......但是到了什么?
是的我确保IP地址有效并使用端口号"4321".Ping设备有效.但它给我的错误:"无法连接到10.0.0.86:4321:4321"
我试图通过以太网和WiFi连接.两者都失败了
我有一个.NET_4托管C++引用类,它来自用C#编写的.NET_4基类.
C#基类:
namespace Core
{
public class ResourceManager
{
public class _Resource
{
public virtual void Delete() {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
托管C++类:
namespace Input.DI
{
public ref class Mouse : ResourceManager::_Resource
{
public:
virtual void Delete() {}
};
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
'Input :: DI :: Mouse :: Delete':匹配base ref class方法'Core :: ResourceManager :: _ Resource :: Delete',但不标记为'new'或'override'; 假设'new'(和'virtual')
virtual
从C#类重写函数的正确托管C++语法是什么?
好的,所以我在Windows上遇到了一些OpenGL的线程问题.我正在使用C#.NET来封装GL.我在Windows7 x64上.
所以我尝试了两种不同的测试.在每个测试中,我渲染一个无纹理的四边形(又称两个三角形).从我能说的话来看,CPU命中似乎与SwapBuffers有关.
单线程测试(这很好)::
{
Draw stuff;
SwapBuffers;
Sleep(15);
}
Run Code Online (Sandbox Code Playgroud)
RenderingThread测试(这吃了我所有的CPU)::
{
Draw stuff;
SwapBuffers;
//glFinish(); //<< If used this seems to make the CPU usage normal
Sleep(15);
}
Run Code Online (Sandbox Code Playgroud)
我知道这个例子很简单,但真正的问题是为什么OpenGL会在一个不同的线程上调用SwapBuffers时吸取我所有的CPU,而不是Windows GUI线程运行的线程?为什么glFinish()似乎解决了这个问题?每个人都说不要使用glFinish,所以我不确定我做错了什么,或者OpenGL只是在Windows上糟透了......?
我在OSX上运行相同的测试,CPU似乎正常.我在Windows上使用D3D9和D3D10运行相同的测试,CPU似乎正常.我没有在Linux上进行测试,因为我的L-box已关闭.
试图在.NET Core项目中获取自定义CoreLib以便在VS 2017中加载。这在.NET Framework中非常容易,因为您需要的只是“ NoStdLib ”,但使用.NET Core似乎需要更多的部件。我不断收到:“项目文件不完整。预期的导入丢失了。”
<?xml version="1.0" encoding="utf-8"?>
<!--<Project Sdk="Microsoft.NET.Sdk">-->
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{3DA06C3A-2E7B-4CB7-80ED-9B12916013F9}</ProjectGuid>
<OutputType>Library</OutputType>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<!--<TargetFramework>netcoreapp2.2</TargetFramework>-->
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
<AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
<ExcludeMscorlibFacade>true</ExcludeMscorlibFacade>
<NoStdLib>true</NoStdLib>
<NoCompilerStandardLib>true</NoCompilerStandardLib>
<LangVersion>latest</LangVersion>
<RootNamespace>System</RootNamespace>
</PropertyGroup>
<PropertyGroup>
<AssemblyName>System.Private.CoreLib</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<MajorVersion>4</MajorVersion>
<MinorVersion>6</MinorVersion>
<ExcludeAssemblyInfoPartialFile>true</ExcludeAssemblyInfoPartialFile>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
正在关闭System.Private.CoreLib.csproj在做什么,并且不确定缺少的部分是什么?删除“ Sdk =“ Microsoft.NET.Sdk” “会导致部分问题,因为我认为自定义corelib无法使用
我基于的基础是:https : //github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/System.Private.CoreLib.csproj
有谁知道csproj的设置是什么使它起作用?我似乎找不到任何好的信息。
作为一个不熟悉SQL的人,因为我使用的不是很多,所以我敢肯定对这个问题有答案,但是我不知道要寻找什么才能找到它,所以我深表歉意。
问题:如果我在数据库中有一堆具有很多列的行,但只需要取回更快的ID或它们的速度相同?
SELECT * FROM...
Run Code Online (Sandbox Code Playgroud)
与
SELECT ID FROM...
Run Code Online (Sandbox Code Playgroud) 做一个以人类可读的方式将.NET IL翻译成C++的实验.
这是问题所在: C#允许您使用相同的方法名称来解析多个接口,这些接口的返回类型不同.C++似乎不支持这个,但是使用vTable解决两个接口是不可能的(或者我错了?).
我找到了一种使用模板在C++中复制C#方法的方法,但我想知道是否有一种方法不需要模板来解决同样的问题?模板很冗长,如果可能的话,我不希望它们用于每种接口类型.
这是C++版本.
template<typename T>
class IMyInterface
{
public: short (T::*Foo_IMyInterface)() = 0;
};
template<typename T>
class IMyInterface2
{
public: int (T::*Foo_IMyInterface2)() = 0;
};
class MyClass : public IMyInterface<MyClass>, public IMyInterface2<MyClass>
{
public: MyClass()
{
Foo_IMyInterface = &MyClass::Foo;
Foo_IMyInterface2 = &MyClass::IMyInterface2_Foo;
}
public: virtual short Foo()
{
return 1;
}
private: int IMyInterface2_Foo()
{
return 1;
}
};
class MyClass2 : public MyClass
{
public: virtual short Foo() override
{
return 2;
}
}; …
Run Code Online (Sandbox Code Playgroud) 我对WPF中的"ContextMenu"有疑问.有没有办法只在执行"Shift-Right-Click"时弹出上下文菜单?我一直在寻找这个地方.在进行"右键单击"时,ContextMenu似乎只能弹出.
有人有主意吗 ??
c# ×6
.net ×4
c++ ×2
.net-core ×1
adb ×1
android ×1
android-tv ×1
asp.net ×1
bitmap ×1
buffer ×1
bytecode ×1
contextmenu ×1
cpu ×1
csproj ×1
database ×1
debugging ×1
double ×1
il ×1
interface ×1
macos ×1
managed ×1
math ×1
mono ×1
opengl ×1
optimization ×1
overloading ×1
overriding ×1
right-click ×1
shift ×1
sql ×1
sql-server ×1
swap ×1
templates ×1
virtual ×1
wpf ×1