Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
5a87757b
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,发现更多精彩内容 >>
提交
5a87757b
编写于
9月 01, 2011
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'remotes/mrdoob/dev' into dev
上级
59bfd811
d8e75851
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
1002 addition
and
787 deletion
+1002
-787
build/Three.js
build/Three.js
+414
-411
build/custom/ThreeCanvas.js
build/custom/ThreeCanvas.js
+67
-67
build/custom/ThreeDOM.js
build/custom/ThreeDOM.js
+15
-15
build/custom/ThreeSVG.js
build/custom/ThreeSVG.js
+43
-43
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+181
-178
examples/webgl_test_memory.html
examples/webgl_test_memory.html
+95
-0
src/core/Geometry.js
src/core/Geometry.js
+2
-2
src/core/Object3D.js
src/core/Object3D.js
+4
-0
src/renderers/Projector.js
src/renderers/Projector.js
+15
-11
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+166
-60
未找到文件。
build/Three.js
浏览文件 @
5a87757b
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
build/custom/ThreeCanvas.js
浏览文件 @
5a87757b
此差异已折叠。
点击以展开。
build/custom/ThreeDOM.js
浏览文件 @
5a87757b
此差异已折叠。
点击以展开。
build/custom/ThreeSVG.js
浏览文件 @
5a87757b
此差异已折叠。
点击以展开。
build/custom/ThreeWebGL.js
浏览文件 @
5a87757b
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
examples/webgl_test_memory.html
0 → 100644
浏览文件 @
5a87757b
<!DOCTYPE HTML>
<html
lang=
"en"
>
<head>
<title>
three.js - webgl
</title>
<meta
charset=
"utf-8"
>
<style
type=
"text/css"
>
body
{
background
:
#fff
;
padding
:
0
;
margin
:
0
;
overflow
:
hidden
;
}
</style>
</head>
<body>
<script
type=
"text/javascript"
src=
"../build/Three.js"
></script>
<script
type=
"text/javascript"
>
var
container
;
var
camera
,
scene
,
renderer
;
init
();
setInterval
(
render
,
1000
/
60
);
function
init
()
{
container
=
document
.
createElement
(
'
div
'
);
document
.
body
.
appendChild
(
container
);
camera
=
new
THREE
.
Camera
(
60
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
10000
);
camera
.
position
.
z
=
200
;
scene
=
new
THREE
.
Scene
();
renderer
=
new
THREE
.
WebGLRenderer
();
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
container
.
appendChild
(
renderer
.
domElement
);
}
function
createImage
()
{
var
canvas
=
document
.
createElement
(
'
canvas
'
);
canvas
.
width
=
256
;
canvas
.
height
=
256
;
var
context
=
canvas
.
getContext
(
'
2d
'
);
context
.
fillStyle
=
'
rgb(
'
+
Math
.
floor
(
Math
.
random
()
*
256
)
+
'
,
'
+
Math
.
floor
(
Math
.
random
()
*
256
)
+
'
,
'
+
Math
.
floor
(
Math
.
random
()
*
256
)
+
'
)
'
;
context
.
fillRect
(
0
,
0
,
256
,
256
);
return
canvas
;
}
//
function
animate
()
{
requestAnimationFrame
(
animate
);
render
();
}
function
render
()
{
var
geometry
=
new
THREE
.
SphereGeometry
(
50
,
Math
.
random
()
*
64
,
Math
.
random
()
*
32
);
var
texture
=
new
THREE
.
Texture
(
createImage
()
);
texture
.
needsUpdate
=
true
;
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
texture
,
wireframe
:
true
}
)
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
scene
.
addObject
(
mesh
);
renderer
.
render
(
scene
,
camera
);
scene
.
removeObject
(
mesh
);
renderer
.
deallocateObject
(
mesh
);
renderer
.
deallocateTexture
(
texture
);
}
</script>
</body>
</html>
src/core/Geometry.js
浏览文件 @
5a87757b
...
...
@@ -7,7 +7,7 @@
THREE
.
Geometry
=
function
()
{
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
id
=
THREE
.
GeometryCount
++
;
this
.
vertices
=
[];
this
.
colors
=
[];
// one-to-one vertex colors, used in ParticleSystem, Line and Ribbon
...
...
@@ -510,4 +510,4 @@ THREE.Geometry.prototype = {
};
THREE
.
Geometry
IdCounter
=
0
;
THREE
.
Geometry
Count
=
0
;
src/core/Object3D.js
浏览文件 @
5a87757b
...
...
@@ -6,6 +6,8 @@
THREE
.
Object3D
=
function
()
{
this
.
id
=
THREE
.
Object3DCount
++
;
this
.
parent
=
undefined
;
this
.
children
=
[];
...
...
@@ -233,3 +235,5 @@ THREE.Object3D.prototype = {
}
};
THREE
.
Object3DCount
=
0
;
src/renderers/Projector.js
浏览文件 @
5a87757b
...
...
@@ -12,6 +12,8 @@ THREE.Projector = function() {
_line
,
_lineCount
,
_linePool
=
[],
_particle
,
_particleCount
,
_particlePool
=
[],
_objectList
=
[],
_renderList
=
[],
_vector3
=
new
THREE
.
Vector4
(),
_vector4
=
new
THREE
.
Vector4
(),
_projScreenMatrix
=
new
THREE
.
Matrix4
(),
...
...
@@ -52,9 +54,9 @@ THREE.Projector = function() {
this
.
projectObjects
=
function
(
scene
,
camera
,
sort
)
{
var
renderList
=
[],
o
,
ol
,
objects
,
object
,
matrix
;
var
o
,
ol
,
objects
,
object
,
matrix
;
_objectList
.
length
=
0
;
_objectCount
=
0
;
objects
=
scene
.
objects
;
...
...
@@ -73,13 +75,13 @@ THREE.Projector = function() {
_object
.
object
=
object
;
_object
.
z
=
_vector3
.
z
;
render
List
.
push
(
_object
);
_object
List
.
push
(
_object
);
}
sort
&&
render
List
.
sort
(
painterSort
);
sort
&&
_object
List
.
sort
(
painterSort
);
return
render
List
;
return
_object
List
;
};
...
...
@@ -87,13 +89,15 @@ THREE.Projector = function() {
this
.
projectScene
=
function
(
scene
,
camera
,
sort
)
{
var
renderList
=
[],
near
=
camera
.
near
,
far
=
camera
.
far
,
var
near
=
camera
.
near
,
far
=
camera
.
far
,
o
,
ol
,
v
,
vl
,
f
,
fl
,
n
,
nl
,
c
,
cl
,
u
,
ul
,
objects
,
object
,
objectMatrix
,
objectMatrixRotation
,
objectMaterials
,
objectOverdraw
,
geometry
,
vertices
,
vertex
,
vertexPositionScreen
,
faces
,
face
,
faceVertexNormals
,
normal
,
faceVertexUvs
,
uvs
,
v1
,
v2
,
v3
,
v4
;
_renderList
.
length
=
0
;
_face3Count
=
0
;
_face4Count
=
0
;
_lineCount
=
0
;
...
...
@@ -241,7 +245,7 @@ THREE.Projector = function() {
_face
.
z
=
_face
.
centroidScreen
.
z
;
renderList
.
push
(
_face
);
_
renderList
.
push
(
_face
);
}
...
...
@@ -280,7 +284,7 @@ THREE.Projector = function() {
_line
.
materials
=
object
.
materials
;
renderList
.
push
(
_line
);
_
renderList
.
push
(
_line
);
}
}
...
...
@@ -306,7 +310,7 @@ THREE.Projector = function() {
_particle
.
materials
=
object
.
materials
;
renderList
.
push
(
_particle
);
_
renderList
.
push
(
_particle
);
}
...
...
@@ -314,9 +318,9 @@ THREE.Projector = function() {
}
sort
&&
renderList
.
sort
(
painterSort
);
sort
&&
_
renderList
.
sort
(
painterSort
);
return
renderList
;
return
_
renderList
;
};
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
5a87757b
...
...
@@ -296,6 +296,53 @@ THREE.WebGLRenderer = function ( parameters ) {
};
this
.
deallocateObject
=
function
(
object
)
{
if
(
!
object
.
__webglInit
)
return
;
object
.
__webglInit
=
false
;
delete
object
.
_modelViewMatrix
;
delete
object
.
_normalMatrixArray
;
delete
object
.
_modelViewMatrixArray
;
delete
object
.
_objectMatrixArray
;
if
(
object
instanceof
THREE
.
Mesh
)
{
for
(
g
in
object
.
geometry
.
geometryGroups
)
{
deleteMeshBuffers
(
object
.
geometry
.
geometryGroups
[
g
]
);
}
}
else
if
(
object
instanceof
THREE
.
Ribbon
)
{
deleteRibbonBuffers
(
object
.
geometry
);
}
else
if
(
object
instanceof
THREE
.
Line
)
{
deleteLineBuffers
(
object
.
geometry
);
}
else
if
(
object
instanceof
THREE
.
ParticleSystem
)
{
deleteParticleBuffers
(
object
.
geometry
);
}
};
this
.
deallocateTexture
=
function
(
texture
)
{
if
(
!
texture
.
__webglInit
)
return
;
texture
.
__webglInit
=
false
;
_gl
.
deleteTexture
(
texture
.
__webglTexture
);
};
//
function
setupLights
(
program
,
lights
)
{
var
l
,
ll
,
light
,
n
,
...
...
@@ -397,7 +444,9 @@ THREE.WebGLRenderer = function ( parameters ) {
};
function
createParticleBuffers
(
geometry
)
{
// Buffer allocation
function
createParticleBuffers
(
geometry
)
{
geometry
.
__webglVertexBuffer
=
_gl
.
createBuffer
();
geometry
.
__webglColorBuffer
=
_gl
.
createBuffer
();
...
...
@@ -451,6 +500,60 @@ THREE.WebGLRenderer = function ( parameters ) {
};
// Buffer deallocation
function
deleteParticleBuffers
(
geometry
)
{
_gl
.
deleteBuffer
(
geometry
.
__webglVertexBuffer
);
_gl
.
deleteBuffer
(
geometry
.
__webglColorBuffer
);
};
function
deleteLineBuffers
(
geometry
)
{
_gl
.
deleteBuffer
(
geometry
.
__webglVertexBuffer
);
_gl
.
deleteBuffer
(
geometry
.
__webglColorBuffer
);
};
function
deleteRibbonBuffers
(
geometry
)
{
_gl
.
deleteBuffer
(
geometry
.
__webglVertexBuffer
);
_gl
.
deleteBuffer
(
geometry
.
__webglColorBuffer
);
};
function
deleteMeshBuffers
(
geometryGroup
)
{
_gl
.
deleteBuffer
(
geometryGroup
.
__webglVertexBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglNormalBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglTangentBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglColorBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglUVBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglUV2Buffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglSkinVertexABuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglSkinVertexBBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglSkinIndicesBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglSkinWeightsBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglFaceBuffer
);
_gl
.
deleteBuffer
(
geometryGroup
.
__webglLineBuffer
);
if
(
geometryGroup
.
numMorphTargets
)
{
for
(
var
m
=
0
,
ml
=
geometryGroup
.
numMorphTargets
;
m
<
ml
;
m
++
)
{
_gl
.
deleteBuffer
(
geometryGroup
.
__webglMorphTargetsBuffers
[
m
]
);
}
}
};
//
function
initLineBuffers
(
geometry
)
{
var
nvertices
=
geometry
.
vertices
.
length
;
...
...
@@ -3966,7 +4069,9 @@ THREE.WebGLRenderer = function ( parameters ) {
var
g
,
geometry
,
geometryGroup
;
if
(
object
.
_modelViewMatrix
==
undefined
)
{
if
(
!
object
.
__webglInit
)
{
object
.
__webglInit
=
true
;
object
.
_modelViewMatrix
=
new
THREE
.
Matrix4
();
...
...
@@ -3976,106 +4081,107 @@ THREE.WebGLRenderer = function ( parameters ) {
object
.
matrixWorld
.
flattenToArray
(
object
.
_objectMatrixArray
);
}
if
(
object
instanceof
THREE
.
Mesh
)
{
if
(
object
instanceof
THREE
.
Mesh
)
{
geometry
=
object
.
geometry
;
geometry
=
object
.
geometry
;
if
(
geometry
.
geometryGroups
==
undefined
)
{
if
(
geometry
.
geometryGroups
==
undefined
)
{
sortFacesByMaterial
(
geometry
);
sortFacesByMaterial
(
geometry
);
}
}
// create separate VBOs per geometry chunk
// create separate VBOs per geometry chunk
for
(
g
in
geometry
.
geometryGroups
)
{
for
(
g
in
geometry
.
geometryGroups
)
{
geometryGroup
=
geometry
.
geometryGroups
[
g
];
geometryGroup
=
geometry
.
geometryGroups
[
g
];
// initialise VBO on the first access
// initialise VBO on the first access
if
(
!
geometryGroup
.
__webglVertexBuffer
)
{
if
(
!
geometryGroup
.
__webglVertexBuffer
)
{
createMeshBuffers
(
geometryGroup
);
initMeshBuffers
(
geometryGroup
,
object
);
createMeshBuffers
(
geometryGroup
);
initMeshBuffers
(
geometryGroup
,
object
);
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyMorphTargets
=
true
;
geometry
.
__dirtyElements
=
true
;
geometry
.
__dirtyUvs
=
true
;
geometry
.
__dirtyNormals
=
true
;
geometry
.
__dirtyTangents
=
true
;
geometry
.
__dirtyColors
=
true
;
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyMorphTargets
=
true
;
geometry
.
__dirtyElements
=
true
;
geometry
.
__dirtyUvs
=
true
;
geometry
.
__dirtyNormals
=
true
;
geometry
.
__dirtyTangents
=
true
;
geometry
.
__dirtyColors
=
true
;
}
}
addBuffer
(
scene
.
__webglObjects
,
geometryGroup
,
object
);
addBuffer
(
scene
.
__webglObjects
,
geometryGroup
,
object
);
}
}
}
else
if
(
object
instanceof
THREE
.
Ribbon
)
{
}
else
if
(
object
instanceof
THREE
.
Ribbon
)
{
geometry
=
object
.
geometry
;
geometry
=
object
.
geometry
;
if
(
!
geometry
.
__webglVertexBuffer
)
{
if
(
!
geometry
.
__webglVertexBuffer
)
{
createRibbonBuffers
(
geometry
);
initRibbonBuffers
(
geometry
);
createRibbonBuffers
(
geometry
);
initRibbonBuffers
(
geometry
);
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
}
}
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
}
else
if
(
object
instanceof
THREE
.
Line
)
{
}
else
if
(
object
instanceof
THREE
.
Line
)
{
geometry
=
object
.
geometry
;
geometry
=
object
.
geometry
;
if
(
!
geometry
.
__webglVertexBuffer
)
{
if
(
!
geometry
.
__webglVertexBuffer
)
{
createLineBuffers
(
geometry
);
initLineBuffers
(
geometry
);
createLineBuffers
(
geometry
);
initLineBuffers
(
geometry
);
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
}
}
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
}
else
if
(
object
instanceof
THREE
.
ParticleSystem
)
{
}
else
if
(
object
instanceof
THREE
.
ParticleSystem
)
{
geometry
=
object
.
geometry
;
geometry
=
object
.
geometry
;
if
(
!
geometry
.
__webglVertexBuffer
)
{
if
(
!
geometry
.
__webglVertexBuffer
)
{
createParticleBuffers
(
geometry
);
initParticleBuffers
(
geometry
,
object
);
createParticleBuffers
(
geometry
);
initParticleBuffers
(
geometry
,
object
);
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
geometry
.
__dirtyVertices
=
true
;
geometry
.
__dirtyColors
=
true
;
}
}
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
addBuffer
(
scene
.
__webglObjects
,
geometry
,
object
);
}
else
if
(
THREE
.
MarchingCubes
!==
undefined
&&
object
instanceof
THREE
.
MarchingCubes
)
{
}
else
if
(
THREE
.
MarchingCubes
!==
undefined
&&
object
instanceof
THREE
.
MarchingCubes
)
{
addBufferImmediate
(
scene
.
__webglObjectsImmediate
,
object
);
addBufferImmediate
(
scene
.
__webglObjectsImmediate
,
object
);
}
else
if
(
object
instanceof
THREE
.
Sprite
)
{
}
else
if
(
object
instanceof
THREE
.
Sprite
)
{
scene
.
__webglSprites
.
push
(
object
);
scene
.
__webglSprites
.
push
(
object
);
}
}
/*else if ( object instanceof THREE.Particle ) {
/*else if ( object instanceof THREE.Particle ) {
}*/
}*/
}
};
...
...
@@ -4908,8 +5014,8 @@ THREE.WebGLRenderer = function ( parameters ) {
if
(
!
texture
.
__webglInit
)
{
texture
.
__webglTexture
=
_gl
.
createTexture
();
texture
.
__webglInit
=
true
;
texture
.
__webglTexture
=
_gl
.
createTexture
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录