为了在C中定义可由Lua调用的方法,它必须匹配给定的签名并使用Lua API来检索参数并返回结果.我正在编写Lua的C#包装器,我对能够调用任意C#方法而不使它们遵循这些约定感兴趣.在包装类似D的东西时,可以使用模板系统为任何给定方法动态创建此粘合代码.我认为这在C#中可能也是可能的,但是通过使用动态代码生成.
C API看起来像这样,生成的代码将通过我的库的较低级别部分来操作它,该部分P/Invokes Lua C库.
static int foo (lua_State *L)
{
int n = lua_gettop(L); /* number of arguments */
lua_Number sum = 0;
int i;
for (i = 1; i <= n; i++)
{
if (!lua_isnumber(L, i))
{
lua_pushstring(L, "incorrect argument");
lua_error(L);
}
sum += lua_tonumber(L, i);
}
lua_pushnumber(L, sum/n); /* first result */
lua_pushnumber(L, sum); /* second result */
return 2; /* number of results */
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我的想法是采用C#方法,反映其参数和返回值,生成(或从缓存中检索)一个方法,该方法使用上面的Lua API传递这些参数并返回这些返回类型,最后将该方法推送到Lua .因此,当从Lua调用C#函数时,它看起来像lua - > magic wrapper function - >普通的C#函数. …
虽然OpenGL 3.x本身的最新参考文献似乎很少,但OpenGL的实际低级操作相对简单.然而,我在试图甚至概念化如何操纵VBO以呈现动态世界时遇到了严重的麻烦.
显然,旧的直接模式方式是不适用的,但从那里我去哪里?我是否编写了某种场景结构,然后将其转换为一组顶点并将其传输到VBO,我将如何存储翻译数据?如果是这样,那么代码看起来会如何?
基本上真的不确定如何继续.
我无法使用OpenGL正确地将纹理映射到几何体上.事实上,我似乎甚至打破了以前工作正常的颜色插值.我在C99中创建了一个使用SDL,GLee和SOIL的测试用例.
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <SDL/SDL.h>
#include <GL/GLee.h>
#include <SOIL/SOIL.h>
static const char *vertex_source = " \
uniform mat4 projection; \
uniform mat4 view_model; \
\
attribute vec2 vertex; \
attribute vec2 texcoord; \
attribute vec4 colour; \
\
varying vec2 _texcoord; \
\
void main() \
{ \
gl_Position = gl_ModelViewProjectionMatrix * vec4(vertex, 0, 1); \
_texcoord = texcoord; \
gl_FrontColor = colour; \
} ";
static const char *fragment_source = " …
Run Code Online (Sandbox Code Playgroud) 我想拍摄一组图像和一个声音轨道,然后用它来构建一个使用gstreamer的基本视频幻灯片.
似乎有很多文档和基本gstreamer用法的例子,如播放视频或音频文件,甚至转码等.但是,我想,在视频编辑任务中,我似乎找不到任何特别有用的东西.
我觉得我对gstreamer的基本原理有一个很好的把握,但是我很难理解如何加入这些点,可以这么说.特别是我拍摄一组图像并将它们转换为单个视频输出的位.