注意:我理解基本的数学.我理解perspective各种数学库中的典型函数会产生一个矩阵,它将-zNear到-zFar的z值转换回-1到+1,但前提是结果除以w
具体的问题是GPU为你做了什么,而不是你必须自己做?
换句话说,可以说的GPU没有神奇划分gl_Position的gl_Position.w,并且代替你不得不做手工,如
attribute vec4 position;
uniform mat4 worldViewProjection;
void main() {
gl_Position = worldViewProjection * position;
// imaginary version of GL where we must divide by W ourselves
gl_Position /= gl_Position.w;
}
Run Code Online (Sandbox Code Playgroud)
由于这个原因,这个想象中的GL会打破什么?它是否有效或是否有一些关于在被除以之前传递值的东西,它w为GPU提供了额外需要的信息?
请注意,如果我实际执行此操作,纹理映射透视图会中断.
"use strict";
var m4 = twgl.m4;
var gl = twgl.getWebGLContext(document.getElementById("c"));
var programInfo = twgl.createProgramInfo(gl, ["vs", "fs"]);
var bufferInfo = twgl.primitives.createCubeBufferInfo(gl, 2);
var tex = twgl.createTexture(gl, {
min: gl.NEAREST,
mag: gl.NEAREST,
src: [
255, 255, 255, 255, …Run Code Online (Sandbox Code Playgroud)在本文中,作者使用此图解释了变基:
alt text http://eagain.net/articles/git-for-computer-scientists/git-history.7.png
Rebase:如果您还没有发布您的分支机构,或者已经清楚地告知其他人不应该以此为基础,那么您可以选择其他方式.您可以重新分支您的分支,而不是合并,您的提交将被另一个具有不同父级的提交所取代,并且您的分支将被移动到那里.
而正常的合并将如下所示:
alt text http://eagain.net/articles/git-for-computer-scientists/git-history.5.png
所以,如果你重订,你只是失去了一个历史状态(这将是垃圾回收在将来某个时候).那么,为什么有人想要做一次变革呢?我在这里错过了什么?
我不知道如何解决以下对等依赖性错误.
mondwan@mondwan-All-Series:~/Documents/git/py-cli_build_tools$ sudo npm -g list | grep eslint
??? babel-eslint@7.1.1
??? eslint@3.12.2
??? eslint-config-airbnb@13.0.0
? ??? eslint-config-airbnb-base@10.0.1
??? eslint-config-eslint@3.0.0
??? eslint-plugin-import@2.2.0
? ??? eslint-import-resolver-node@0.2.3
? ??? eslint-module-utils@2.0.0
??? UNMET PEER DEPENDENCY eslint-plugin-jsx-a11y@3.0.2
??? eslint-plugin-react@6.8.0
npm ERR! peer dep missing: eslint-plugin-jsx-a11y@^2.2.3, required by eslint-config-airbnb@13.0.0
Run Code Online (Sandbox Code Playgroud)
如你所见,我已安装了eslint-plugin-jsx-a11y@3.0.2绝对满足的^2.2.3要求
eslint-config-airbnb.但是,它显示了这样的错误消息.有什么想法解决这个问题吗?
什么是PlaneBufferGeometry以及它与PlaneGeometry的不同之处?(R69)
为了使用HTML5画布,我决定制作一个绘制模拟表盘的应用程序.一切都很好,除了旧的线条没有像我期望的那样被抹去.我已经包含了下面的部分代码 - DrawHands()每秒调用一次:
var hoursPoint = new Object();
var minutesPoint = new Object();
var secondsPoint = new Object();
function drawHands()
{
var now = new Date();
drawLine(centerX, centerY, secondsPoint.X, secondsPoint.Y, "white", 1);
var seconds = now.getSeconds();
secondsPoint = getOtherEndOfLine(centerX, centerY, 2 * Math.PI / 60 * seconds, 0.75 * radius);
drawLine(centerX, centerY, secondsPoint.X, secondsPoint.Y, "black", 1);
drawLine(centerX, centerY, minutesPoint.X, minutesPoint.Y, "white", 3);
var minutes = now.getMinutes();
minutesPoint = getOtherEndOfLine(centerX, centerY, 2 * Math.PI / 60 * minutes, 0.75 * radius); …Run Code Online (Sandbox Code Playgroud) 我想在运行时使网格的一部分不可见.我可以将这些部件设置为不可见/透明,例如通过更改单个面的属性吗?网格本身仅使用一种材质.
示例性说明作为编辑理解这个问题:设想一个目(这里为20个顶点的几何形状),其中的四个顶点每个四边形积聚一个Face4.现在,网格的某些部分应该是不可见的(这里两个面是不可见的).

我知道THREE.js有来自各种3D图形格式的导入器.
是否有适合显示在3dStudioMax中创建的模型的导入程序?如果没有,有没有办法将一个3dStudioMax模型转换成可以在THREE.js中导入的东西?
假设我们有一个像罗密欧与朱丽叶这样的长文本,我们想在一个简单的电子阅读器中展示它(没有动画,只有页面和自定义字体大小).有什么方法可以得到这个?
到目前为止我想出了什么:
document.elementFromPoint来查找页面上最后一个元素(word)并从该单词向前显示下一页.尽管这是唯一对我来说看起来很实际的东西,但由此产生的开销必须是巨大的.然而,这些似乎都没有被接受(首先没有给予足够的控制以使其工作,第二个尚未得到支持,第三个是艰难的,没有文本选择而第四个给出了荒谬的开销),所以任何好的方法我尚未想到,或者解决上述方法的一个或多个缺点的方法(是的,我知道这是一个相当开放的问题,但它越开放,产生任何相关答案的机会越高)?
在HLSL中,我必须使用语义将信息从顶点着色器传递到片段着色器.在GLSL中,不需要语义.语义的客观利益是什么?
示例:GLSL
顶点着色器
varying vec4 foo
varying vec4 bar;
void main() {
...
foo = ...
bar = ...
}
Run Code Online (Sandbox Code Playgroud)
片段着色器
varying vec4 foo
varying vec4 bar;
void main() {
gl_FragColor = foo * bar;
}
Run Code Online (Sandbox Code Playgroud)
示例:HLSL
顶点着色器
struct VS_OUTPUT
{
float4 foo : TEXCOORD3;
float4 bar : COLOR2;
}
VS_OUTPUT whatever()
{
VS_OUTPUT out;
out.foo = ...
out.bar = ...
return out;
}
Run Code Online (Sandbox Code Playgroud)
像素着色器
void main(float4 foo : TEXCOORD3,
float4 bar : COLOR2) : COLOR
{
return foo * …Run Code Online (Sandbox Code Playgroud) 我有一个代码库,其中需要在某些独特函数之前和之后按顺序调用一些常见函数
例如:
common1();
common2();
unique(); // note: unique returns void but can have any number of arguments
common3();
common4();
Run Code Online (Sandbox Code Playgroud)
问题是,每当unique创建新的功能或commonX添加更多功能时,代码中需要此模式的每个位置都必须匹配。
一种解决方案是使用宏
#define DO_UNIQUE_CORRECTLY(unique_code_block) \
common1(); \
common2(); \
unique_code_block \
common3(); \
commont(); \
...
void someFunc1(arg1) {
DO_UNIQUE_CORRECTLY({
unique1(arg1);
});
}
void someFunc2(arg1, arg2) {
DO_UNIQUE_CORRECTLY({
unique2(arg1, arg2);
});
}
Run Code Online (Sandbox Code Playgroud)
这样可行。问题是:是否有一种非宏 C++ 方法可以零开销并阻止错误并且使用起来不会过于冗长。
注意:如果不明显,“不过分冗长”的要求意味着我调用的函数可能有很多类型非常大的参数。必须复制并粘贴类型列表=“过于冗长”
我知道的一种解决方案是这样的
class Helper {
Helper() {
common1();
common2();
}
~Helper() {
common3();
common4();
}
}
void someFunc1(arg1) …Run Code Online (Sandbox Code Playgroud) javascript ×4
three.js ×3
glsl ×2
html ×2
html5-canvas ×2
3d ×1
3dsmax ×1
algorithm ×1
c++ ×1
css ×1
dvcs ×1
git ×1
hlsl ×1
mesh ×1
npm ×1
npm-install ×1
npm-update ×1
opengl ×1
opengl-es ×1