Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
f1cc77c2
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f1cc77c2
编写于
11月 18, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplified SpritePlugin code.
上级
2178ba7f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
56 deletion
+47
-56
src/extras/renderers/plugins/SpritePlugin.js
src/extras/renderers/plugins/SpritePlugin.js
+47
-56
未找到文件。
src/extras/renderers/plugins/SpritePlugin.js
浏览文件 @
f1cc77c2
...
...
@@ -5,7 +5,10 @@
THREE
.
SpritePlugin
=
function
()
{
var
_gl
,
_renderer
,
_precision
,
_sprite
=
{};
var
_gl
,
_renderer
,
_precision
;
var
vertices
,
faces
,
vertexBuffer
,
elementBuffer
;
var
program
,
attributes
,
uniforms
;
this
.
init
=
function
(
renderer
)
{
...
...
@@ -14,66 +17,57 @@ THREE.SpritePlugin = function () {
_precision
=
renderer
.
getPrecision
();
_sprite
.
vertices
=
new
Float32Array
(
8
+
8
);
_sprite
.
faces
=
new
Uint16Array
(
6
);
var
i
=
0
;
_sprite
.
vertices
[
i
++
]
=
-
0.5
;
_sprite
.
vertices
[
i
++
]
=
-
0.5
;
// vertex 0
_sprite
.
vertices
[
i
++
]
=
0
;
_sprite
.
vertices
[
i
++
]
=
0
;
// uv 0
_sprite
.
vertices
[
i
++
]
=
0.5
;
_sprite
.
vertices
[
i
++
]
=
-
0.5
;
// vertex 1
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
0
;
// uv 1
_sprite
.
vertices
[
i
++
]
=
0.5
;
_sprite
.
vertices
[
i
++
]
=
0.5
;
// vertex 2
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
// uv 2
vertices
=
new
Float32Array
(
[
-
0.5
,
-
0.5
,
0
,
0
,
0.5
,
-
0.5
,
1
,
0
,
0.5
,
0.5
,
1
,
1
,
-
0.5
,
0.5
,
0
,
1
]
);
_sprite
.
vertices
[
i
++
]
=
-
0.5
;
_sprite
.
vertices
[
i
++
]
=
0.5
;
// vertex 3
_sprite
.
vertices
[
i
++
]
=
0
;
_sprite
.
vertices
[
i
++
]
=
1
;
// uv 3
faces
=
new
Uint16Array
(
[
0
,
1
,
2
,
0
,
2
,
3
]
);
i
=
0
;
vertexBuffer
=
_gl
.
createBuffer
();
elementBuffer
=
_gl
.
createBuffer
();
_
sprite
.
faces
[
i
++
]
=
0
;
_sprite
.
faces
[
i
++
]
=
1
;
_sprite
.
faces
[
i
++
]
=
2
;
_
sprite
.
faces
[
i
++
]
=
0
;
_sprite
.
faces
[
i
++
]
=
2
;
_sprite
.
faces
[
i
++
]
=
3
;
_
gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
vertexBuffer
)
;
_
gl
.
bufferData
(
_gl
.
ARRAY_BUFFER
,
vertices
,
_gl
.
STATIC_DRAW
)
;
_
sprite
.
vertexBuffer
=
_gl
.
createBuffer
(
);
_
sprite
.
elementBuffer
=
_gl
.
createBuffer
(
);
_
gl
.
bindBuffer
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
elementBuffer
);
_
gl
.
bufferData
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
faces
,
_gl
.
STATIC_DRAW
);
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
_sprite
.
vertexBuffer
);
_gl
.
bufferData
(
_gl
.
ARRAY_BUFFER
,
_sprite
.
vertices
,
_gl
.
STATIC_DRAW
);
program
=
createProgram
(
THREE
.
ShaderSprite
[
'
sprite
'
],
_precision
);
_gl
.
bindBuffer
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
_sprite
.
elementBuffer
);
_gl
.
bufferData
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
_sprite
.
faces
,
_gl
.
STATIC_DRAW
);
attributes
=
{
position
:
_gl
.
getAttribLocation
(
program
,
'
position
'
),
uv
:
_gl
.
getAttribLocation
(
program
,
'
uv
'
)
};
_sprite
.
program
=
createProgram
(
THREE
.
ShaderSprite
[
"
sprite
"
],
_precision
);
uniforms
=
{
uvOffset
:
_gl
.
getUniformLocation
(
program
,
'
uvOffset
'
),
uvScale
:
_gl
.
getUniformLocation
(
program
,
'
uvScale
'
),
_sprite
.
attributes
=
{};
_sprite
.
uniforms
=
{};
rotation
:
_gl
.
getUniformLocation
(
program
,
'
rotation
'
),
scale
:
_gl
.
getUniformLocation
(
program
,
'
scale
'
),
halfViewport
:
_gl
.
getUniformLocation
(
program
,
'
halfViewport
'
),
_sprite
.
attributes
.
position
=
_gl
.
getAttribLocation
(
_sprite
.
program
,
"
position
"
);
_sprite
.
attributes
.
uv
=
_gl
.
getAttribLocation
(
_sprite
.
program
,
"
uv
"
);
color
:
_gl
.
getUniformLocation
(
program
,
'
color
'
),
map
:
_gl
.
getUniformLocation
(
program
,
'
map
'
),
opacity
:
_gl
.
getUniformLocation
(
program
,
'
opacity
'
),
_sprite
.
uniforms
.
uvOffset
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
uvOffset
"
);
_sprite
.
uniforms
.
uvScale
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
uvScale
"
);
modelViewMatrix
:
_gl
.
getUniformLocation
(
program
,
'
modelViewMatrix
'
),
projectionMatrix
:
_gl
.
getUniformLocation
(
program
,
'
projectionMatrix
'
),
_sprite
.
uniforms
.
rotation
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
rotation
"
);
_sprite
.
uniforms
.
scale
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
scale
"
);
_sprite
.
uniforms
.
halfViewport
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
halfViewport
"
);
fogType
:
_gl
.
getUniformLocation
(
program
,
'
fogType
'
),
fogDensity
:
_gl
.
getUniformLocation
(
program
,
'
fogDensity
'
),
fogNear
:
_gl
.
getUniformLocation
(
program
,
'
fogNear
'
),
fogFar
:
_gl
.
getUniformLocation
(
program
,
'
fogFar
'
),
fogColor
:
_gl
.
getUniformLocation
(
program
,
'
fogColor
'
),
_sprite
.
uniforms
.
color
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
color
"
);
_sprite
.
uniforms
.
map
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
map
"
);
_sprite
.
uniforms
.
opacity
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
opacity
"
);
_sprite
.
uniforms
.
modelViewMatrix
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
modelViewMatrix
"
);
_sprite
.
uniforms
.
projectionMatrix
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
projectionMatrix
"
);
_sprite
.
uniforms
.
fogType
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
fogType
"
);
_sprite
.
uniforms
.
fogDensity
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
fogDensity
"
);
_sprite
.
uniforms
.
fogNear
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
fogNear
"
);
_sprite
.
uniforms
.
fogFar
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
fogFar
"
);
_sprite
.
uniforms
.
fogColor
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
fogColor
"
);
_sprite
.
uniforms
.
alphaTest
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
alphaTest
"
);
alphaTest
:
_gl
.
getUniformLocation
(
program
,
'
alphaTest
'
)
};
};
...
...
@@ -84,15 +78,12 @@ THREE.SpritePlugin = function () {
if
(
!
nSprites
)
return
;
var
attributes
=
_sprite
.
attributes
,
uniforms
=
_sprite
.
uniforms
;
var
halfViewportWidth
=
viewportWidth
*
0.5
,
halfViewportHeight
=
viewportHeight
*
0.5
;
// setup gl
_gl
.
useProgram
(
_sprite
.
program
);
_gl
.
useProgram
(
program
);
_gl
.
enableVertexAttribArray
(
attributes
.
position
);
_gl
.
enableVertexAttribArray
(
attributes
.
uv
);
...
...
@@ -100,11 +91,11 @@ THREE.SpritePlugin = function () {
_gl
.
disable
(
_gl
.
CULL_FACE
);
_gl
.
enable
(
_gl
.
BLEND
);
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
_sprite
.
vertexBuffer
);
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
vertexBuffer
);
_gl
.
vertexAttribPointer
(
attributes
.
position
,
2
,
_gl
.
FLOAT
,
false
,
2
*
8
,
0
);
_gl
.
vertexAttribPointer
(
attributes
.
uv
,
2
,
_gl
.
FLOAT
,
false
,
2
*
8
,
8
);
_gl
.
bindBuffer
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
_sprite
.
elementBuffer
);
_gl
.
bindBuffer
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
elementBuffer
);
_gl
.
uniformMatrix4fv
(
uniforms
.
projectionMatrix
,
false
,
camera
.
projectionMatrix
.
elements
);
...
...
@@ -233,7 +224,7 @@ THREE.SpritePlugin = function () {
var
fragmentShader
=
_gl
.
createShader
(
_gl
.
FRAGMENT_SHADER
);
var
vertexShader
=
_gl
.
createShader
(
_gl
.
VERTEX_SHADER
);
var
prefix
=
"
precision
"
+
precision
+
"
float;
\n
"
;
var
prefix
=
'
precision
'
+
precision
+
'
float;
\n
'
;
_gl
.
shaderSource
(
fragmentShader
,
prefix
+
shader
.
fragmentShader
);
_gl
.
shaderSource
(
vertexShader
,
prefix
+
shader
.
vertexShader
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录