小编Mik*_*eir的帖子

在WebGL中禁用特定几何体的抗锯齿

我已经编写了一个基于磁贴的引擎 - 只要在WebGL中禁用了抗锯齿,一切看起来都很好.

启用抗锯齿时,有时会渲染图块边缘的像素,这些像素主要显示为背景像素并适当填充深度缓冲区.当更强烈(更高的α)像素进入时,由于深度缓冲而被丢弃.

我确实尝试禁用深度缓冲区,并"将混合因子设置为GL_SRC_ALPHA_SATURATE(源)和GL_ONE(目标)",如下所示:http://www.glprogramming.com/red/chapter06.html .这导致绘制纯白色像素 - 不确定那里发生了什么.

我的纹理上的图形都被填充,因此WebGL不应该有过滤问题.我已经使填充极端,以确保这不是一个促成因素.

我已经glSampleCoverage()在黑暗中探索并尝试了几次射击,随机值不会产生任何价值.我不熟悉它实际上做了什么,除了一些抽象的建议外,在网上找不到任何好的例子.

我宁愿不禁用深度缓冲区.

GL_MULTISAMPLE 不可用.

我有一个带C++环境的Emscripten - 但这没关系,我可以根据需要编写内联javascript - 但我认为这是通用的OpenGL解决方案.

有没有办法在WebGL中仅为某些几何体禁用抗锯齿?

好: 好

坏: 坏

javascript c++ opengl-es webgl emscripten

9
推荐指数
1
解决办法
1241
查看次数

使用libgit2从另一个分支创建新的git存储库?

在使用libgit2的C++中,我想创建一个新的本地存储库,其master分支基于specific-branch另一个本地存储库,保持其历史记录,以便稍后我可以在两者之间同步.

基本上,我尝试以下,除了使用libgit2:

/sf/answers/667089321/

所以,如果我的文件安排如下:

./old.git [branches:master,specific-branch]

./old/*[特定分支的./old.git文件和克隆]

命令的位置如下:

git init --bare ./new.git
cd ./old
git push ./new.git +specific-branch:master
Run Code Online (Sandbox Code Playgroud)

并想出类似的东西(删除错误检查以减少代码):

git_libgit2_init();
git_repository* repo = nullptr;
git_repository_init(&repo, "./new.git", true);
git_remote_create(&remote, repo, "origin", "./new.git");
git_remote_add_push(repo, "origin", "+specific-branch:master");
git_push_options optionsPush = GIT_PUSH_OPTIONS_INIT;
git_remote_push(remote, nullptr, &optionsPush);
Run Code Online (Sandbox Code Playgroud)

我不确定的是从这里开始的地方以及如何git_remote_push()正确地调用实际执行某些操作的地方.目前没有副作用,因为./old.git没有参考.也就是说,./new.git是正确创建的,但它不包含./old.git/的内容./old/*.

非常感谢.


基于建议采用"获取"方法的答案,我还尝试了以下方法:

git_repository* repo = nullptr;
if (git_repository_init(&repo, "./new.git", true)) {
    FATAL();
}
git_remote* remote;
git_remote_create_anonymous(&remote, repo, "./old");
char* specs[] = { _strdup("specific-branch:master"), nullptr …
Run Code Online (Sandbox Code Playgroud)

c++ git libgit2

7
推荐指数
1
解决办法
555
查看次数

fopen/fread APK来自Android上NativeActivity的资产

我只能找到2010年及之前的解决方案.所以我想知道是否有更新的立场.

我想避免使用Java并纯粹使用C++来访问存储在APK中的文件(少于或多于1MB).使用AssetManager意味着我不能像其他操作系统(包括iOS)上的每个其他文件一样访问文件.

如果没有,C++中是否有一个方法,我可以以某种方式将fopen/fread映射到AssetManager API?

c++ android android-ndk native-activity

6
推荐指数
2
解决办法
7940
查看次数

OpenGL ES错误转换为字符串

是否存在从OpenGL ES 1.1或2.0中从glGetError()(Android和iOS)和eglGetError()(Android)获取错误字符串的标准?

我正在使用这样的东西:

#define AssertGL(x) { x; GLenum __gle = glGetError(); Assert(__gle == GL_NO_ERROR); }
Run Code Online (Sandbox Code Playgroud)

最好对此进行增强,以向调试器提供文本,而不必手动查找存储在中的返回值的GLenum __gle

error-handling android opengl-es ios native-activity

5
推荐指数
1
解决办法
5022
查看次数

在C++中使用的脚本语言中在运行时创建新的类/成员

我一直在研究这个问题几个月,现在想要真正想出一个适当的解决方案来处理用成员函数/创建新的用户定义类(以及那些类的实例)的情况C++ 11项目中运行时的属性.

到目前为止,我一直在使用SWIG(以前使用Python,现在使用Lua,探索Squirrel).就像我到目前为止遇到的所有C++绑定/嵌入库(Luna*,luabinder,luabind,OOLua,Sqrat/Sqext,Squall)一样,所有人都希望在代码执行之前用C++预定义类,因为它们要么依赖于预处理器指令或模板.

所以我的问题是,是否有任何库使用更程序化的方法来包装语言,或者是否有任何像Lua或Squirrel这样的好的教程/示例,建议用于处理自定义类的创建有自定义成员和功能?一些方向将不胜感激.

即使只是一个很好的例子,展示如何使用函数和属性创建一个自定义类,在Lua,Squirrel中,通过它们各自的C++ API而不使用宏/模板/动态生成的代码,将非常有用.

编辑:我已经创建了一个Instance包含std::vector成员键/值对的类,以及一个标识类型的成员,因此可以查找函数.但是,在没有使用静态代码的情况下,在Lua/Squirrel中创建简单类的文档很少.

编辑2:我想要一个适用于任何平台的解决方案,无需动态链接.

c++ lua swig squirrel

5
推荐指数
1
解决办法
518
查看次数

我可以用什么代替std :: move()?

我正在使用具有C ++ 0x规范的C ++编译器,并希望使我的move构造器成为环绕std :: wstring的String类。

class String {
public:
    String(String&& str) : mData(std::move(str.mData)) {
    }

private:
    std::wstring mData;
};
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,这完美无缺。在Xcode std::move()中不可用。

c++ std rvalue-reference move-semantics c++11

4
推荐指数
1
解决办法
1093
查看次数

如何在Visual Basic 6中嵌入浏览器控件?

我想将Web浏览器控件嵌入到Visual Basic 6应用程序中.

唯一的问题是我不想使用Internet Explorer,因为它有几个问题,而且这正是我正在使用的.

如果合理可行,Firefox,Chrome甚至Opera都会受到赞赏.

browser vb6 controls webbrowser-control

4
推荐指数
1
解决办法
2万
查看次数

你如何平均将两个32位颜色打包成一个整数?

我试图平均两种颜色.

我原来的(可怕的)工具如下:

//color is a union
int ColorAverage(int c1, int c2) {
    color C1(c1);
    color C2(c2);
    return color(
        (unsigned char)(0.5f * C1.a + 0.5f * C2.a),
        (unsigned char)(0.5f * C1.r + 0.5f * C2.r),
        (unsigned char)(0.5f * C1.g + 0.5f * C2.g),
        (unsigned char)(0.5f * C1.b + 0.5f * C2.b)
    ).c;
}
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案如下(表现更好):

int ColorAverage(int c1, int c2) {
    unsigned char* b1 = reinterpret_cast<unsigned char*>(&c1);
    unsigned char* b2 = reinterpret_cast<unsigned char*>(&c2);
    int value;
    unsigned char* bv = reinterpret_cast<unsigned char*>(&value);
    bv[0] …
Run Code Online (Sandbox Code Playgroud)

int average colors

3
推荐指数
1
解决办法
485
查看次数

C++对std::shared_ptr引用的reinterpret_cast进行优化

您有两个类AnimalDog(其中Dog继承自Animal),并且您经常会遇到一种情况,您经常期待动物,但发送的是狗的实例。在我的特定情况下,我经常将强指针(std::shared_ptr<Dog>)投射到动物期望函数(std::shared_ptr<Animal>)。

如果我们接受我们可以将函数参数设置为引用(std::shared_ptr<Animal>&避免争论为什么不应该将强指针作为引用参数,因为担心更改线程的所有权),我认为我们在内存方面可以安全地强制转换std::shared_ptr<Dog> dog使用reinterpret_cast<std::shared_ptr<Animal>&>(dog),对吗?

如果是这样,除了线程问题之外还会出现什么问题?比如引用计数的变化?

需要明确的是,我们的目的是提供一种可在许多情况下使用的解决方案,在这些情况下,一次强制转换并不是真正可行的解决方案。更重要的是,有许多对象需要铸造。此外,忽略这一点std::unique_ptr可能是也可能不是更好的解决方案。

std::shared_ptr添加最后一个要求 -在通用序列化器类函数是虚拟的因此无法模板化的情况下,使用普通指针将不允许我更改原始指针。

c++ smart-pointers shared-ptr reinterpret-cast c++11

1
推荐指数
1
解决办法
7942
查看次数