我想知道是否有很多需要Flash到C#转换器.它将从swf转换所有资产和代码,并输出.png/.mp3/.avi和.cs文件,以便您可以编译它们.
你可以输入swf,选择一些选项,然后就可以了.我可能会认为你可以针对Desktop/DX,Desktop/OpenGL(适用于Mac和Linux),Mobile/Win7,Mobile/MonoTouch进行定位.
我已经设法读取了swf文件格式,并从中获得了有用的信息.
所以,我的观点是:写作需要一段时间,这将是一项艰巨的任务.我应该继续这个项目,还是找一些更有用的东西.
我正在编写一个Xlib应用程序,我希望窗口居中.我已经习惯XMoveWindow了(desktopWidth - width) / 2, (desktopHeight - height) / 2它,它大致在正确的位置.
然而问题是宽度和高度是客户区域,而不是总面积.有什么方法让我得到窗口的总面积?
我需要使用,Xlib因为我正在使用Glx和OpenGL.我不想使用SDL,也没有庞大的图形库.
我正在用C#编写一个应用程序,它是跨平台的.它DllImport用于几个不同的库.它也是x32和x64.它似乎适用于我自己编译的.dll/.so.我将x32共享库放在x32子文件夹中,将x64共享库放在x64子文件夹中.
在Windows上通过.net框架我调用SetDllDirectory("x32" or "x64")取决于当前运行时.在mono上,通过windows,linux或mac,我DllMap在RandomLibrary.dll.config中使用了一个.它适用于位于x32或x64目录中的文件.
但是,我也DllImport用于我没有编写的库,例如FreeType2.在Windows上,我只是将构建的库推送到两个子文件夹中.但是在Linux上我宁愿使用你可以通过友好的本地包管理器安装的libfreetype6库.我可以将DllMap链接硬编码为/usr/lib/x86_64-linux-gnu/libfreetype.so.6,但我认为freetype文件会根据你使用的发行版而改变.
有什么简单的方法,它可以找到libfreetype.so无论我使用什么发行版?
我将IronPython嵌入到我的游戏引擎中,您可以在其中将脚本附加到对象.我不希望脚本能够随时访问CLR,因为它们几乎可以做任何事情.
拥有随机脚本,特别是从互联网上下载,能够打开互联网连接,访问用户硬盘或修改内部游戏状态是一件非常糟糕的事情.
通常人们会建议"使用单独的AppDomain".但是,除非我严重错误,否则跨AppDomains会很慢.非常慢.游戏引擎太慢了.所以我在寻找其他选择.
我想过编译一个自定义版本的IronPython会阻止你导入clr或任何命名空间,从而限制它到标准库.
我宁愿选择的选项如下:
__builtins__.__import__ = None #Stops imports working
reload = None #Stops reloading working (specifically stops them reloading builtins
#giving back an unbroken __import___!
Run Code Online (Sandbox Code Playgroud)
我在另一个堆栈溢出帖子中读到了这个.假设不是设置__ builtins_ ._ import__为none,我将其设置为自定义函数,允许您加载标准API.
问题是,使用上面概述的方法,脚本能否有任何方式能够访问clr模块,.net BCL或其他任何可能造成坏处的事情?或者我应该修改源代码?第三种选择?
我有两个(相同的)着色器,一个在 hlsl 中,一个在 glsl 中。在像素着色器中,我将向量乘以矩阵以进行法线变换。代码本质上是:
HLSL
float3 v = ...;
float3x3 m = ...;
float3 n = mul(v, m);
Run Code Online (Sandbox Code Playgroud)
GLSL
vec3 v = ...;
mat3 m = ...;
vec3 n = v * m;
Run Code Online (Sandbox Code Playgroud)
这应该执行行向量乘法,但在 glsl 中却没有。如果我明确地输入算法,它对两者都适用。据我所知,glsl 和 hlsl 规范都表示,如果向量位于左侧(事实确实如此),则它们应该执行行向量乘法。
另一个令人困惑的事情是,我在顶点着色器中将向量乘以矩阵,向量在左侧,但这在 glsl 和 hlsl 中都可以正常工作。这让我猜测这只是片段/像素着色器中的问题。
我使用以下方法将矩阵从顶点着色器传递到片段着色器:
out vec3 out_vs_TangentToWorldX;
out vec3 out_vs_TangentToWorldY;
out vec3 out_vs_TangentToWorldZ;
out_vs_TangentToWorldX = tangent * world3D;
out_vs_TangentToWorldY = binormal * world3D;
out_vs_TangentToWorldZ = normal * world3D;
Run Code Online (Sandbox Code Playgroud)
在片段着色器中我用以下命令重建它:
in vec3 out_vs_TangentToWorldX;
in vec3 out_vs_TangentToWorldY;
in vec3 out_vs_TangentToWorldZ; …Run Code Online (Sandbox Code Playgroud) 在DirectX中,您可以拥有单独的渲染目标和深度缓冲区,因此您可以绑定渲染目标和深度缓冲区,执行一些渲染,移除深度缓冲区,然后使用旧的深度缓冲区作为纹理进行更多渲染.
你会如何在opengl中解决这个问题?根据我的理解,你有一个framebuffer对象,它包含颜色缓冲区和可选的深度缓冲区.我不认为我可以同时绑定几个帧缓冲对象,我是否必须在每次更改时重新创建帧缓冲对象(可能是帧的几次)?普通的opengl程序如何做到这一点?