小编Sko*_*ius的帖子

在WebGL中,属性,统一和变量变量之间有什么区别?

在比较这些不同的类型或者这些东西是如何工作时,我能想到一个类比吗?

另外,统一矩阵意味着什么?

variables types matrix webgl

68
推荐指数
3
解决办法
4万
查看次数

你怎么知道在AVL树中进行旋转的位置?

所以我自学了AVL树,我理解它背后的基本思想,但我只是想确保我实际实现它的直觉是有效的:

我会用左旋转检查它 -

所以,以下情况很简单:

      8
     / \
    7   10
   /
  6
 /
3
Run Code Online (Sandbox Code Playgroud)

当我们添加3时,树重新平衡为:

    8
   / \
  6   10
 / \
3   7
Run Code Online (Sandbox Code Playgroud)

但轮换是基于3的增加还是根据7的子树的不平衡?它甚至是基于植根于8的树的不平衡吗?

在我看来,以下示例是事情变得有点毛茸茸的地方:

      9
     / \
    7   10
   / \
  6   8
 /
3
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,当添加3时,7处的子树很好,因此子树不需要旋转.然而,9处的树是不平衡的,加上3,所以我们将旋转基于9.我们得到:

      7
     / \
    6   9
   /   / \
  3   8   10
Run Code Online (Sandbox Code Playgroud)

因此,在编写我的代码时,我很快就会编写以下代码,从小子树开始,使用更大的子树来完成这个工作?

伪代码:

function balanceTree(Node n){

  if (n is not null){

    balanceTree(n.rightchild);
    balanceTree(n.leftchild);
  }

  if (abs(balanceFactor(n))>1){

    rotateAsNeeded(n);// rotate based on balance factor

  }

}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

algorithm rotation avl-tree binary-search-tree data-structures

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

有没有办法在python中使用itertools来清理嵌套迭代?

假设我有以下代码:

a = [1,2,3]
b = [2,4,6]
c = [3,5,7]

for i in a:
  for j in b:
    for k in c:
      print i * j * k
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在一行中合并迭代器而不是嵌套?

python iterator nested-loops python-itertools

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

如何在WebGL中将多个纹理发送到片段着色器?

所以在我的代码的javascript部分,这里是实际上向顶点和片段着色器发送像素数组的片段 - 但是当我到达那些着色器时我只使用1个纹理 - 无论如何我可以发送两个纹理一次?如果是这样,我怎么能在代码的GLSL方面'捕获'它们?

        if (it > 0){

            gl.activeTexture(gl.TEXTURE1);

            gl.bindTexture(gl.TEXTURE_2D, texture);

            gl.activeTexture(gl.TEXTURE0);

            gl.bindFramebuffer(gl.FRAMEBUFFER, FBO2);}

        else{

            gl.activeTexture(gl.TEXTURE1);

            gl.bindTexture(gl.TEXTURE_2D, texture2);

            gl.activeTexture(gl.TEXTURE0);

            gl.bindFramebuffer(gl.FRAMEBUFFER, FBO);}

        gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
Run Code Online (Sandbox Code Playgroud)

javascript double textures glsl webgl

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

JOGL异常 - 在java.library.path中找不到gluegen- rt

线程"main"java.lang.UnsatisfiedLinkError中的异常:java.lang.Runtime.loadLibrary0中java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)的java.library.path中没有gluegen-rt(Runtime.java: 845)at java.lang.System.loadLibrary(System.java:1084)at com.jogamp.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:102)at com.jogamp.gluegen.runtime.NativeLibLoader.access $ 000( NativeLibLoader.java:51)com.jogamp.gluegen.runtime.NativeLibLoader $ 1.run(NativeLibLoader.java:70)at java.security.AccessController.doPrivileged(Native Method)at com.jogamp.gluegen.runtime.NativeLibLoader.loadGlueGenRT (NativeLibLoader.java:68)com.jogamp.common.jvm.JVMUtil.(JVMUtil.java:56)位于HelloWorld.main的javax.media.opengl.GLProfile.(GLProfile.java:1051)(HelloWorld.java: 14)

每次我尝试运行教程JOGL文件时,我都会得到这个可爱的异常.我拼命地尽我所能.为jogl和gluegen添加所有可能的库,包括:

jogl.jar jogl.all.jar jogl natives gluegen natives gluegen和jogle natives for macosx

一切,它说没有gluegen库,虽然显然有.-.-我在某处读到了有关jnilib文件的内容,并尝试将它们放入带有jar文件的文件夹中,但仍然没有运气.

顺便说一句,我正在使用Eclipse.

eclipse jar exception path jogl

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

在html页面上向下滚动时如何阻止白色出现?

在此处输入图片说明

我在 CSS 中定义的 html 文档中有一个渐变背景:

body {
    /*background-color: #1A0F0F;*/
    /*color: #D7D7D7;*/
    /*height: 100%;*/ /* come back to this */
    margin: 0;
    background: -webkit-linear-gradient(green, black); 
    background: -o-linear-gradient(green, black); 
    background: -moz-linear-gradient(green, black); 
    background: linear-gradient(green, black);
    background-repeat: no-repeat;
    background-attachment: fixed;
}
Run Code Online (Sandbox Code Playgroud)

背景渐变肯定存在,但是当我滚动时,渐变消失在底部矩形上并且只是白色 - 具体来说,这是在 Mac 上打开 Google Chrome 上的文档,但它似乎也发生在 Safari 上。

任何想法会导致这种情况?

html css background web

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

以下是线程安全的吗?4个线程写入相同的数据结构

所以假设我有4个线程,它们都循环遍历一个包含100个索引的数组,翻转每个索引中的信息位并写回该索引...

arr[];

Thread 1:

for (int i = 0; i< 100; i+=4) { flip bits of arr[i]}

Thread 2:

for (int j = 1; j< 100; j+=4) { flip bits of arr[j]}

Thread 3:

for (int k = 2; k< 100; k+=4) { flip bits of arr[k]}

Thread 4:

for (int l = 3; l< 100; l+=4) { flip bits of arr[l]}
Run Code Online (Sandbox Code Playgroud)

我是并发的总菜鸟,所以我想知道这是不是很好的做法,还是有另一种方法可以做到这一点?

更新:只是要明确 - 如果"arr [i]的翻转位"和"arr [j]的翻转位"由于某种原因触摸相同的对象/成员,答案"不是线程安全"是显而易见的(并且没有任何内容)与数组或实际问题有关),所以假设这些操作不会直接或在某些更深层次的对象中为不同的i和j对触摸相同的内存.

java arrays multithreading thread-safety

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

Three.js 中的粒子系统教程/介绍

我一直试图在 Three.js 中找到一些关于粒子系统的很好的教程,但一直没有找到任何值得注意的东西。是否有一个易于使用的粒子引擎,也许有一些很好的介绍和文档?此外,在这些粒子系统中,我是否可以自由支配单个粒子的定位,还是完全随机?

documentation webgl particle-system three.js

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

由 2 维数组表示的 3 维数组 -

因此,在 WebGL 中,我可以存储最多 2 维的纹理 - 并使用 texture2D(无论如何)在着色器中读取它;

如果我想存储一个 3 维纹理,以便我可以在着色器上读取 3 维数据,我该怎么做?

这是我的想法 - 我想知道我是否正确地接近它:

在 JavaScript 中:

var info = [];

for (var x = 0; x < 1; x+=.1) {
     for (var y = 0; y < 1; y+=.1) {
          for (var z = 0; z < 1; z+=.1) {

               info.push (x*y*z); 
               info.push(0);
               info.push(0);
               info.push(0);

          }
     }
}

//bind texture here- whatever

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 10, 100, 0,
                  gl.RGBA, gl.FLOAT, data_on_shader);

//other texture stuff
Run Code Online (Sandbox Code Playgroud)

在着色器上:

uniform sampler …
Run Code Online (Sandbox Code Playgroud)

arrays 3d textures multidimensional-array webgl

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

为什么.h中定义的私有结构在.cpp文件中需要返回类型的作用域?

标头看起来像这样:

namespace A {
class A {
  private:
    struct B  {
      int x;
    };

    B foo();
};
}
Run Code Online (Sandbox Code Playgroud)

我的.cpp看起来像这样

namespace A {
   A::B A::foo() { //implement }
}
Run Code Online (Sandbox Code Playgroud)

我为什么不能这样做:

B A::foo() {//implement}
Run Code Online (Sandbox Code Playgroud)

如果B作用域位于A.h文件中,为什么A::B还要在cpp文件中使用?我们已经在A命名空间中就不必定义A::B?是否足够?我知道这B是私有的A,但是对于命名空间真的重要吗?

c++ namespaces private-members

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