小编Mic*_* IV的帖子

拉后,Git在文件中插入垃圾元标记

在GIT中使用PULL操作更新本地存储库时,我遇到了以下问题.我处理本地文件.然后,一些从远程工作的团队成员将更新后的版本提交给远程主服务器.然后我将其拉出来进行更新和合并用我的本地东西.之后我通常会收到有关冲突等的通知.我确实添加-A,commit -a,当我查看本地文件时,只有我工作的那些,我可以看到像HEAD那样的git数据库元标记>> >>>>>>>>>并且提交号码显示为内联(php类)并使整个文件损坏.我认为它是与权限相关的东西(在UBUNTU上工作).所以我打开了对所有文件的完整权限(chmod -R 777).但仍然得到这个问题.再一次,它只发生在我修改过的那些本地文件.用GIT和Linux做一个菜鸟会很感激有关该主题的任何有用的输入.谢谢.

git ubuntu

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

C++ 多态性和类型转换

我对 C++ 比较陌生,一直在使用 OpenGL 开发基本的 3D 渲染引擎。我有以下问题:我有一个名为 GeomEntity 的类,它是所有几何基元的基类。我有另一个名为 DefaultMaterial 的类,它是所有材质的基类(由不同类型的着色器程序组成)。因为我将拥有多种类型的材质,例如:ColorMaterial、TextureMaterial、AnimatedMaterial 等,我需要在 GeomEntity 类中放置对材质的引用,以便从主应用程序我可以使用此功能设置任何材料:

  void GeomEntity ::addMaterial (const DefaultMaterial *mat){

         material=mat;////material is the member variable pointer of type DefaultMaterial

  }
Run Code Online (Sandbox Code Playgroud)

但问题是,虽然所有这些材质都派生自 DefaultMaterial,但它们都有自己独特的方法,如果我默认将它们引用到 DefaultMaterial 变量,则无法触发这些方法。例如在主应用程序中:

  Sphere sphere;
  ....
  sphere.addMaterial(&animMaterial);///of type AnimatedMaterial
  sphere.material->interpolateColor(timerSinceStart);
   ///doesn't happen anything  as the sphere.material is
  /// of type DefaultMaterial that has   no interpolateColor() method
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用模板或强制转换,但我想听听 C++ 中这种多态性的最佳实践。在 Java 或 C# 中,我真的会使用这样的东西:

((AnimatedMaterial)sphere.material).interpolateColor(timerSinceStart);
Run Code Online (Sandbox Code Playgroud)

c++ oop polymorphism

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

针对字符串的Java HashMap键比较失败

我有以下情况.我有一个Java中的HashMap,键作为字符串.然后在某个阶段,在运行时我创建等于这些键的字符串,以便从该映射中检索数据.字符串在"for"循环中如下创建:

 String keyToRetrive = "lights[" + Integer.toString(i) + "]" + ".Intensity";
Run Code Online (Sandbox Code Playgroud)

关于它的奇怪的事情,当我通过地图迭代找到等于该字符串,即使找到匹配的搜索步骤over.So在该搜索循环的关键:

  while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        if (name == entry.getKey()) {  ///name- "lights[0].Intesity"
            uniformOut = (ICleanable) entry.getValue();
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

具有名称"lights [0] .Intesity"的键永远不会返回true,即使地图包含一个.我如何解决它.我使用hashCode()来比较两个字符串值.所以这个版本确实有效:

 while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        if (name.hashCode() == entry.getKey().hashCode()) {
            uniformOut = (ICleanable) entry.getValue();
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

更新:在指出"=="不能正常工作并且应该使用"equals()"的事实后,我想缩小这个问题:为什么"=="适用于不是由几个创建的字符串连接块?我的意思是,如果我定义键字符串再次比较为一个简单的单个字符串:

 String foo="foo";
Run Code Online (Sandbox Code Playgroud)

这样的字符串可以使用"=="与HashMap键进行比较.

我不是专业的Java程序员,所以任何人都可以解释为什么它这样工作?

java

0
推荐指数
2
解决办法
5163
查看次数

将 C++ 中的类从类类型实例化为 std::map 值

我需要将以下 Java 概念移植到 C++ 中:

持有对象 id 键和类类型值的哈希映射:

 Map<String, Class> _objectsBank = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

在 init 方法的某个地方,我像这样填充银行:

    _objectsBank .put("CLASS_ID_1", MyClass1.class);
    _objectsBank .put("CLASS_ID_2", MyClass2.class);
    ....
Run Code Online (Sandbox Code Playgroud)

然后,稍后,我根据需要构造了保存在该银行中的类之一的实例。一种“懒惰”的初始化:

 private MyClass initNewProg(String name) {

    MyClass instance;


    try {

        Class cl = _objectsBank.get(name);
        java.lang.reflect.Constructor co = cl.getConstructor(String.class);
        instance= (MyClass) co.newInstance(name);
        return instance;

    } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
    {
        e.printStackTrace();
        return null;
    }
 }
Run Code Online (Sandbox Code Playgroud)

我将如何在 C++ 中做到这一点?如何将类类型设置为 std::map 值,以便稍后查询以从中构造适当的实例?Boost 库中有这样的东西吗?

c++ java reflection stl

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

MSAA解析为同一FBO的纹理附件

我一直在使用几个自定义FBO.FBO-A附有MSAA纹理,其中几何体被渲染.然后通过将FBO-A的MSAA纹理附件blit到FBO-B的常规tex 2d附件来解决.这个过程意味着在多个FBO之间进行切换,并在几个中说明相反,在不同的FBO之间切换附件之间的性能更明智.我试图设置MSAA纹理和附加到同一个FBO的常规纹理.但我发现我无法通过blitting做出决心.如果我从MSAA到常规纹理副本进行纹理复制,MSAA是否会像blitting一样被解决?

更新:

对于那些有兴趣知道在一个FBO中使用几个FBO和几个附件是否值得(性能明智)的人.我刚做了一个测试(NVidia Quadro 4000),结果是完全相同的FPS(+ = 15-20帧).但可能是硬件和OGL实现依赖.

opengl

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

GLSL C风格数字演员

我遇到了以下问题.我有两个着色器(完全不相关),它们会转换为int并以不同的方式浮动.

从着色器#1(int到float)演示示例:

 color = vec4(float(fragment_count) / float(MAX_FRAGMENTS));
Run Code Online (Sandbox Code Playgroud)

从Shader#2(float到int)演示示例:

  int abNumFrag=(int)imageLoad(abufferCounterImg, coords).r;
Run Code Online (Sandbox Code Playgroud)

第一个着色器编译正常,但第二个着色器抛出错误:

"OpenGL不允许使用C-syle演员"

除非我启用扩展名:#extension GL_NV_gpu_shader5:enable

some(int)someFloat与cast int(someFloat)不一样吗?

opengl glsl

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

使用std :: adressof存储指针地址

我可能在这里遗漏了一些东西.我需要存储新分配的内存块的指针地址.

我这样做:

    void* buffer = _aligned_malloc(4096,4);
    assert(buffer);
    //save its original address:
    void* initialAddress = (void*) std::addressof(buffer );
Run Code Online (Sandbox Code Playgroud)

initialAddress保存的地址与缓冲区的地址不同.

只有当我分配缓冲区指针时,我才能获得相同的地址(这当然是正确的事情):

    initialAddress = buffer;
Run Code Online (Sandbox Code Playgroud)

那么,为什么std :: addressof(缓冲区)显示不同的地址?我正在使用VS2012进行调试.可能是指针的地址而不是缓冲区的地址?

c++ pointers c++11

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

检查盒子内是否有 3D 点

我有一个由 8 个顶点组成的盒子,可以在任何方向上缩放或旋转,所以我对每个变换的顶点应用变换矩阵,我在 X、Y 和 Z 上从中心有中心、大小和方向,我如何检查盒子内有任何 3D 点吗?

c++ 3d geometry glm-math

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

标签 统计

c++ ×4

java ×2

opengl ×2

3d ×1

c++11 ×1

geometry ×1

git ×1

glm-math ×1

glsl ×1

oop ×1

pointers ×1

polymorphism ×1

reflection ×1

stl ×1

ubuntu ×1