首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DukTape在过剩窗口上显示JavaScript画布

DukTape在过剩窗口上显示JavaScript画布
EN

Stack Overflow用户
提问于 2015-03-06 14:57:05
回答 1查看 554关注 0票数 1

我设法让DukTape在我的GLUT项目中工作(它能够使用duk_eval_string();运行内联javascript )。是否可以使用C++在DukTape窗口中显示带有javascript图形的静态html画布?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-14 22:46:36

在Duk磁带中不可能使用HTML5画布绘制方法。Duk磁带是一个Javascript引擎,它允许您执行ES5/5.1兼容的代码。显示HTML画布是Duk磁带无法完成的任务。

如果您最终想要做到这一点,请尝试搜索一个库来完成这样的任务,也许可以查看Firefox源代码。如果您想从头开始完全完成此操作,则需要为所需的每个绘制方法添加C函数绑定(例如在duktope.org/)。举这样的例子:

代码语言:javascript
复制
// C/C++ code:
// C function to be used in the Javascript engine 
int js_draw_rect(duk_context *ctx) {
    // get parameters from javascript function call
    int pos_x = duk_get_number(ctx, -4);
    int pos_y = duk_get_number(ctx, -3);
    ...

    // C/C++ code to draw the rectangle (in your case probably GLUT)
    draw_rectangle(pos_x, pos_y, ...);
    return 0;
}

int main(void) {
    duk_context *ctx;
    ...

    // this snippet adds a binding for the function 'js_draw_rect' so it can be called from Javascript code
    duk_push_global_object(ctx);
    duk_push_c_function(ctx, js_draw_rect, 4/*number of args the JS function has*/);
    duk_put_prop_string(ctx, -2 /*idx:global*/, "drawRect"/*name of function in JS environment*/);
    duk_pop(ctx);
}

// Javascript code:
drawRect(50, 50, 100, 200);
...

此方法允许您创建C/C++函数,该函数处理所有绘图,然后将它们绑定到Javascript引擎,以便在JS中调用它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28901436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档