feat(OpenGL): lab 4
BIN
OpenGL/lab4/Images/Brick-Norman-Brown.TGA
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
OpenGL/lab4/Images/Brick-Std-Orange.TGA
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
OpenGL/lab4/Images/Saturn.TGA
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
OpenGL/lab4/Images/blueFlowers.png
Normal file
After Width: | Height: | Size: 143 KiB |
BIN
OpenGL/lab4/Images/brow.l.tga
Normal file
BIN
OpenGL/lab4/Images/clockface.JPG
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
OpenGL/lab4/Images/continous_smoke.rgb
Normal file
BIN
OpenGL/lab4/Images/dark_grey.tga
Normal file
BIN
OpenGL/lab4/Images/dog_left_eye.jpg
Normal file
After Width: | Height: | Size: 430 KiB |
BIN
OpenGL/lab4/Images/dog_right_eye.jpg
Normal file
After Width: | Height: | Size: 432 KiB |
BIN
OpenGL/lab4/Images/eye.l.tga
Normal file
BIN
OpenGL/lab4/Images/fireparticle8x8.png
Normal file
After Width: | Height: | Size: 647 KiB |
BIN
OpenGL/lab4/Images/forestRoof.png
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
OpenGL/lab4/Images/forestWall.png
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
OpenGL/lab4/Images/land_ocean_ice_lights_2048.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
OpenGL/lab4/Images/land_shallow_topo_2048.jpg
Normal file
After Width: | Height: | Size: 181 KiB |
BIN
OpenGL/lab4/Images/lz.rgb
Normal file
BIN
OpenGL/lab4/Images/moon256128.TGA
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
OpenGL/lab4/Images/mouth.tga
Normal file
BIN
OpenGL/lab4/Images/nose.tga
Normal file
BIN
OpenGL/lab4/Images/osg128.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
OpenGL/lab4/Images/osg256.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
OpenGL/lab4/Images/osg64.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
OpenGL/lab4/Images/osgshaders1.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
OpenGL/lab4/Images/osgshaders2.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
OpenGL/lab4/Images/particle.rgb
Normal file
BIN
OpenGL/lab4/Images/primitives.gif
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
OpenGL/lab4/Images/purpleFlowers.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
OpenGL/lab4/Images/red.tga
Normal file
BIN
OpenGL/lab4/Images/reflect.rgb
Normal file
BIN
OpenGL/lab4/Images/road.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
OpenGL/lab4/Images/rockwall.png
Normal file
After Width: | Height: | Size: 154 KiB |
BIN
OpenGL/lab4/Images/rockwall_NH.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
OpenGL/lab4/Images/skin.tga
Normal file
BIN
OpenGL/lab4/Images/skymap.jpg
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
OpenGL/lab4/Images/smoke.rgb
Normal file
BIN
OpenGL/lab4/Images/tank.rgb
Normal file
BIN
OpenGL/lab4/Images/tree0.rgba
Normal file
BIN
OpenGL/lab4/Images/water.rgb
Normal file
BIN
OpenGL/lab4/Images/white.rgb
Normal file
BIN
OpenGL/lab4/Images/whitemetal_diffuse.jpg
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
OpenGL/lab4/Images/whitemetal_normal.jpg
Normal file
After Width: | Height: | Size: 139 KiB |
67
OpenGL/lab4/Makefile
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#源文件目录
|
||||||
|
SRC_DIR := ./
|
||||||
|
#头文件目录
|
||||||
|
INC_DIR := ./
|
||||||
|
#输出文件目录
|
||||||
|
OUT_DIR := ./build
|
||||||
|
#目标文件(中间文件)目录
|
||||||
|
OBJ_DIR :=./build
|
||||||
|
#链接选项
|
||||||
|
LDFLAGS := $(shell pkg-config --static --libs glfw3)
|
||||||
|
LDFLAGS += $(shell pkg-config --static --libs assimp)
|
||||||
|
LDFLAGS += $(shell pkg-config --static -libs openscenegraph)
|
||||||
|
# 调试符号
|
||||||
|
LDFLAGS += -g
|
||||||
|
#编译工具链
|
||||||
|
CC := g++
|
||||||
|
#输出文件命名
|
||||||
|
OUT := $(OUT_DIR)/hello
|
||||||
|
|
||||||
|
#增加所有头文件所在的目录
|
||||||
|
# INC_DIR += ./include/glad
|
||||||
|
# INC_DIR += ./include/KHR
|
||||||
|
|
||||||
|
#获取头文件目录
|
||||||
|
CPP_FLAGS := $(foreach dir, $(INC_DIR), -I$(wildcard $(dir)))
|
||||||
|
|
||||||
|
#方法一: 将所有源文件的文件目录添加进来,就不用每增加一个文件都修改一下makefile文件
|
||||||
|
#SRC_DIR += ./src/
|
||||||
|
|
||||||
|
#获取所有cpp文件名
|
||||||
|
CPP_SRCS := $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.cpp))
|
||||||
|
|
||||||
|
#方法二:将增加的文件(带目录)增加到源文件数组中,此操作不用增加源文件目录
|
||||||
|
# CPP_SRCS += ./src/sub_path1/*.cpp
|
||||||
|
# CPP_SRCS += ./src/sub_path2/*.cpp
|
||||||
|
# CPP_SRCS += ./src/sub_path....../*.cpp
|
||||||
|
# CPP_SRCS += ./src/sub_pathn/*.cpp
|
||||||
|
|
||||||
|
#生成所有的目标文件名
|
||||||
|
OBJ := $(addprefix $(OBJ_DIR)/, $(notdir $(CPP_SRCS:.cpp=.o)))
|
||||||
|
|
||||||
|
# 最终目标文件的生成(makefile 会将第一个target设为最终生成的目标文件
|
||||||
|
# 【当然这里可以不是可执行文件,它也可以是.o文件】),链接过程
|
||||||
|
# 这条语句的完全写法应该是:
|
||||||
|
# ./OUT/xxx.OUT: prerequisites1.o prerequisites2.o prerequisites3.o ...
|
||||||
|
# g++ prerequisites1.o prerequisites2.o prerequisites3.o ... -o ./OUT/xxx.OUT
|
||||||
|
$(OUT):$(OBJ)
|
||||||
|
$(CC) $^ -o $@ $(LDFLAGS)
|
||||||
|
|
||||||
|
#将所有的.cpp文件加载到当前的路径中
|
||||||
|
vpath %.cpp $(sort $(dir $(CPP_SRCS)))
|
||||||
|
#将所有的源文件编译生成响应的目标文件
|
||||||
|
$(OBJ_DIR)/%.o:%.cpp
|
||||||
|
$(CC) $(CPP_FLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
nv:$(OUT)
|
||||||
|
prime-run ./$(OUT)
|
||||||
|
|
||||||
|
run:$(OUT)
|
||||||
|
./$(OUT)
|
||||||
|
|
||||||
|
all:$(OUT)
|
||||||
|
|
||||||
|
.PHONY:clean
|
||||||
|
clean:
|
||||||
|
rm -rf ./${OUT_DIR}/*
|
||||||
|
rm -rf ./${OBJ_DIR}/*
|
547
OpenGL/lab4/clock.osgt
Normal file
|
@ -0,0 +1,547 @@
|
||||||
|
#Ascii Scene
|
||||||
|
#Version 78
|
||||||
|
#Generator OpenSceneGraph 2.9.17
|
||||||
|
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 1
|
||||||
|
Name "Clock"
|
||||||
|
DataVariance STATIC
|
||||||
|
StateSet TRUE {
|
||||||
|
osg::StateSet {
|
||||||
|
UniqueID 2
|
||||||
|
DataVariance STATIC
|
||||||
|
ModeList 1 {
|
||||||
|
GL_LIGHTING ON
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Children 3 {
|
||||||
|
osg::Geode {
|
||||||
|
UniqueID 3
|
||||||
|
Name "clockHouse"
|
||||||
|
DataVariance STATIC
|
||||||
|
Drawables 1 {
|
||||||
|
osg::Geometry {
|
||||||
|
UniqueID 4
|
||||||
|
Name "clockHouse-geometry"
|
||||||
|
DataVariance STATIC
|
||||||
|
StateSet TRUE {
|
||||||
|
osg::StateSet {
|
||||||
|
UniqueID 5
|
||||||
|
DataVariance STATIC
|
||||||
|
ModeList 3 {
|
||||||
|
GL_CULL_FACE ON
|
||||||
|
GL_LIGHTING ON
|
||||||
|
GL_NORMALIZE OFF|OVERRIDE
|
||||||
|
}
|
||||||
|
AttributeList 1 {
|
||||||
|
osg::Material {
|
||||||
|
UniqueID 6
|
||||||
|
Ambient TRUE Front 0.588 0.588 0.588 1 Back 0.588 0.588 0.588 1
|
||||||
|
Diffuse TRUE Front 1 1 1 1 Back 1 1 1 1
|
||||||
|
Specular TRUE Front 0 0 0 1 Back 0 0 0 1
|
||||||
|
Emission TRUE Front 0 0 0 1 Back 0 0 0 1
|
||||||
|
Shininess TRUE Front 0 Back 0
|
||||||
|
}
|
||||||
|
Value OFF
|
||||||
|
}
|
||||||
|
TextureModeList 1 {
|
||||||
|
Data 1 {
|
||||||
|
GL_TEXTURE_2D ON
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TextureAttributeList 1 {
|
||||||
|
Data 1 {
|
||||||
|
osg::Texture2D {
|
||||||
|
UniqueID 7
|
||||||
|
WRAP_S REPEAT
|
||||||
|
WRAP_T REPEAT
|
||||||
|
WRAP_R CLAMP_TO_EDGE
|
||||||
|
MIN_FILTER LINEAR_MIPMAP_LINEAR
|
||||||
|
MAG_FILTER LINEAR
|
||||||
|
UnRefImageDataAfterApply TRUE
|
||||||
|
ResizeNonPowerOfTwoHint TRUE
|
||||||
|
InternalFormatMode USE_S3TC_DXT1_COMPRESSION
|
||||||
|
Image TRUE {
|
||||||
|
UniqueID 8
|
||||||
|
FileName "Images/clockface.JPG"
|
||||||
|
WriteHint 0 2
|
||||||
|
DataVariance STATIC
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Value OFF
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrimitiveSetList 6 {
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
1 2 0 3
|
||||||
|
}
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
7 4 6 5
|
||||||
|
}
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
23 20 22 21
|
||||||
|
}
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
19 16 18 17
|
||||||
|
}
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
13 14 12 15
|
||||||
|
}
|
||||||
|
DrawElementsUShort GL_TRIANGLE_STRIP 4 {
|
||||||
|
9 10 8 11
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
VertexData {
|
||||||
|
Array TRUE ArrayID 1 Vec3fArray 24 {
|
||||||
|
-0.5 -0.05 0
|
||||||
|
-0.5 0.05 0
|
||||||
|
0.5 0.05 0
|
||||||
|
0.5 -0.05 0
|
||||||
|
-0.5 -0.05 1
|
||||||
|
0.5 -0.05 1
|
||||||
|
0.5 0.05 1
|
||||||
|
-0.5 0.05 1
|
||||||
|
-0.5 -0.05 0
|
||||||
|
0.5 -0.05 0
|
||||||
|
0.5 -0.05 1
|
||||||
|
-0.5 -0.05 1
|
||||||
|
0.5 -0.05 0
|
||||||
|
0.5 0.05 0
|
||||||
|
0.5 0.05 1
|
||||||
|
0.5 -0.05 1
|
||||||
|
0.5 0.05 0
|
||||||
|
-0.5 0.05 0
|
||||||
|
-0.5 0.05 1
|
||||||
|
0.5 0.05 1
|
||||||
|
-0.5 0.05 0
|
||||||
|
-0.5 -0.05 0
|
||||||
|
-0.5 -0.05 1
|
||||||
|
-0.5 0.05 1
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
NormalData {
|
||||||
|
Array TRUE ArrayID 2 Vec3fArray 24 {
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 1
|
||||||
|
0 0 1
|
||||||
|
0 0 1
|
||||||
|
0 0 1
|
||||||
|
0 -1 0
|
||||||
|
0 -1 0
|
||||||
|
0 -1 0
|
||||||
|
0 -1 0
|
||||||
|
1 0 0
|
||||||
|
1 0 0
|
||||||
|
1 0 0
|
||||||
|
1 0 0
|
||||||
|
0 1 0
|
||||||
|
0 1 0
|
||||||
|
0 1 0
|
||||||
|
0 1 0
|
||||||
|
-1 0 0
|
||||||
|
-1 0 0
|
||||||
|
-1 0 0
|
||||||
|
-1 0 0
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
TexCoordData 1 {
|
||||||
|
Data {
|
||||||
|
Array TRUE ArrayID 3 Vec2fArray 24 {
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
0 0
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
0 1
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
osg::Group {
|
||||||
|
UniqueID 9
|
||||||
|
DataVariance STATIC
|
||||||
|
Children 3 {
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 10
|
||||||
|
Name "hours"
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
UpdateCallback TRUE {
|
||||||
|
osg::AnimationPathCallback {
|
||||||
|
UniqueID 11
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
AnimationPath TRUE {
|
||||||
|
osg::AnimationPath {
|
||||||
|
UniqueID 12
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
TimeControlPointMap 3 {
|
||||||
|
Time 0 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 -0.707107 -0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 21600 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation -0.707107 0 0 0.707107
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 43200 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 0.707107 0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Children 1 {
|
||||||
|
osg::Geode {
|
||||||
|
UniqueID 13
|
||||||
|
Name "hours-GEODE"
|
||||||
|
DataVariance STATIC
|
||||||
|
Drawables 1 {
|
||||||
|
osg::Geometry {
|
||||||
|
UniqueID 14
|
||||||
|
Name "hours-Geometry"
|
||||||
|
DataVariance STATIC
|
||||||
|
StateSet TRUE {
|
||||||
|
osg::StateSet {
|
||||||
|
UniqueID 15
|
||||||
|
DataVariance STATIC
|
||||||
|
ModeList 3 {
|
||||||
|
GL_CULL_FACE ON
|
||||||
|
GL_LIGHTING ON
|
||||||
|
GL_NORMALIZE OFF|OVERRIDE
|
||||||
|
}
|
||||||
|
AttributeList 1 {
|
||||||
|
osg::Material {
|
||||||
|
UniqueID 6
|
||||||
|
}
|
||||||
|
Value OFF
|
||||||
|
}
|
||||||
|
TextureModeList 1 {
|
||||||
|
Data 1 {
|
||||||
|
GL_TEXTURE_2D ON
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TextureAttributeList 1 {
|
||||||
|
Data 1 {
|
||||||
|
osg::Texture2D {
|
||||||
|
UniqueID 16
|
||||||
|
WRAP_S REPEAT
|
||||||
|
WRAP_T REPEAT
|
||||||
|
WRAP_R CLAMP_TO_EDGE
|
||||||
|
MIN_FILTER LINEAR_MIPMAP_LINEAR
|
||||||
|
MAG_FILTER LINEAR
|
||||||
|
UnRefImageDataAfterApply TRUE
|
||||||
|
ResizeNonPowerOfTwoHint TRUE
|
||||||
|
InternalFormatMode USE_S3TC_DXT1_COMPRESSION
|
||||||
|
Image TRUE {
|
||||||
|
UniqueID 17
|
||||||
|
FileName "Images/osg64.png"
|
||||||
|
WriteHint 0 2
|
||||||
|
DataVariance STATIC
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Value OFF
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrimitiveSetList 1 {
|
||||||
|
DrawArrays GL_TRIANGLES 0 3
|
||||||
|
|
||||||
|
}
|
||||||
|
VertexData {
|
||||||
|
Array TRUE ArrayID 4 Vec3fArray 3 {
|
||||||
|
0.02 -0.01 -0.051
|
||||||
|
-0.02 -0.01 -0.051
|
||||||
|
0 0.295 -0.051
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
NormalData {
|
||||||
|
Array TRUE ArrayID 5 Vec3fArray 3 {
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
TexCoordData 1 {
|
||||||
|
Data {
|
||||||
|
Array TRUE ArrayID 6 Vec2fArray 3 {
|
||||||
|
0.5 0.95
|
||||||
|
0.5 0.95
|
||||||
|
0.5 0.95
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Matrix {
|
||||||
|
1 0 0 0
|
||||||
|
0 1 0 0
|
||||||
|
0 0 1 0
|
||||||
|
0 0 0.5 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 18
|
||||||
|
Name "Minutes"
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
UpdateCallback TRUE {
|
||||||
|
osg::AnimationPathCallback {
|
||||||
|
UniqueID 19
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
AnimationPath TRUE {
|
||||||
|
osg::AnimationPath {
|
||||||
|
UniqueID 20
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
TimeControlPointMap 3 {
|
||||||
|
Time 0 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 -0.707107 -0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 1800 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation -0.707107 0 0 0.707107
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 3600 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 0.707107 0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Children 1 {
|
||||||
|
osg::Geode {
|
||||||
|
UniqueID 21
|
||||||
|
Name "Minutes-GEODE"
|
||||||
|
DataVariance STATIC
|
||||||
|
Drawables 1 {
|
||||||
|
osg::Geometry {
|
||||||
|
UniqueID 22
|
||||||
|
Name "Minutes-Geometry"
|
||||||
|
DataVariance STATIC
|
||||||
|
StateSet TRUE {
|
||||||
|
osg::StateSet {
|
||||||
|
UniqueID 15
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrimitiveSetList 1 {
|
||||||
|
DrawArrays GL_TRIANGLES 0 3
|
||||||
|
|
||||||
|
}
|
||||||
|
VertexData {
|
||||||
|
Array TRUE ArrayID 7 Vec3fArray 3 {
|
||||||
|
0.017 -0.01 -0.052
|
||||||
|
-0.017 -0.01 -0.052
|
||||||
|
0 0.45 -0.052
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
NormalData {
|
||||||
|
Array TRUE ArrayID 8 Vec3fArray 3 {
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
TexCoordData 1 {
|
||||||
|
Data {
|
||||||
|
Array TRUE ArrayID 9 Vec2fArray 3 {
|
||||||
|
0.195312 0.195312
|
||||||
|
0.195312 0.195312
|
||||||
|
0.195312 0.195312
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Matrix {
|
||||||
|
1 0 0 0
|
||||||
|
0 1 0 0
|
||||||
|
0 0 1 0
|
||||||
|
0 0 0.5 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 23
|
||||||
|
Name "Seconds"
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
UpdateCallback TRUE {
|
||||||
|
osg::AnimationPathCallback {
|
||||||
|
UniqueID 24
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
AnimationPath TRUE {
|
||||||
|
osg::AnimationPath {
|
||||||
|
UniqueID 25
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
TimeControlPointMap 3 {
|
||||||
|
Time 0 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 -0.707107 -0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 30 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation -0.707107 0 0 0.707107
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
Time 60 {
|
||||||
|
Position 0 0 0.5
|
||||||
|
Rotation 0 0.707107 0.707107 0
|
||||||
|
Scale 1 1 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Children 1 {
|
||||||
|
osg::Geode {
|
||||||
|
UniqueID 26
|
||||||
|
Name "Seconds-GEODE"
|
||||||
|
DataVariance STATIC
|
||||||
|
Drawables 1 {
|
||||||
|
osg::Geometry {
|
||||||
|
UniqueID 27
|
||||||
|
Name "Seconds-Geometry"
|
||||||
|
DataVariance STATIC
|
||||||
|
StateSet TRUE {
|
||||||
|
osg::StateSet {
|
||||||
|
UniqueID 15
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrimitiveSetList 1 {
|
||||||
|
DrawArrays GL_TRIANGLES 0 3
|
||||||
|
|
||||||
|
}
|
||||||
|
VertexData {
|
||||||
|
Array TRUE ArrayID 10 Vec3fArray 3 {
|
||||||
|
0.01 -0.01 -0.054
|
||||||
|
-0.01 -0.01 -0.054
|
||||||
|
0 0.47 -0.054
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
NormalData {
|
||||||
|
Array TRUE ArrayID 11 Vec3fArray 3 {
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
0 0 -1
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
TexCoordData 1 {
|
||||||
|
Data {
|
||||||
|
Array TRUE ArrayID 12 Vec2fArray 3 {
|
||||||
|
0.804788 0.195312
|
||||||
|
0.804788 0.195312
|
||||||
|
0.804788 0.195312
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Matrix {
|
||||||
|
1 0 0 0
|
||||||
|
0 1 0 0
|
||||||
|
0 0 1 0
|
||||||
|
0 0 0.5 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 28
|
||||||
|
Name "BackClockFace"
|
||||||
|
DataVariance DYNAMIC
|
||||||
|
Children 1 {
|
||||||
|
osg::Group {
|
||||||
|
UniqueID 9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Matrix {
|
||||||
|
-1 0 0 0
|
||||||
|
0 -1 0 0
|
||||||
|
0 0 1 0
|
||||||
|
0 0 0 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
OpenGL/lab4/main.cpp
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#include <osgViewer/Viewer>
|
||||||
|
#include <osgDB/ReadFile>
|
||||||
|
#include <osgText/Text>
|
||||||
|
#include <osgGA/TrackballManipulator>
|
||||||
|
#include <chrono>
|
||||||
|
#include <osgGA/GUIEventAdapter>
|
||||||
|
#include <osgViewer/ViewerEventHandlers>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace chrono;
|
||||||
|
|
||||||
|
auto lastFT = system_clock::now();
|
||||||
|
auto FT = system_clock::now();
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
// 创建一个OSG Viewer对象
|
||||||
|
osgViewer::Viewer viewer;
|
||||||
|
viewer.setUpViewInWindow(50, 50, 800, 600);
|
||||||
|
viewer.getCamera()->setClearColor(osg::Vec4(0.2, 0.2, 0.2, 1.0));
|
||||||
|
viewer.setCameraManipulator(new osgGA::TrackballManipulator);
|
||||||
|
|
||||||
|
viewer.addEventHandler(new osgViewer::StatsHandler);//查看帧数 s
|
||||||
|
|
||||||
|
// 创建一个OSG Node对象,并加载OSG模型
|
||||||
|
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("clock.osgt");
|
||||||
|
|
||||||
|
// 将Node对象添加到OSG Viewer中
|
||||||
|
viewer.setSceneData(model);
|
||||||
|
// 启动OSG Viewer循环
|
||||||
|
while (!viewer.done())
|
||||||
|
{
|
||||||
|
auto thisFT = system_clock::now();
|
||||||
|
auto FT = duration_cast<microseconds>(thisFT - lastFT);
|
||||||
|
lastFT = thisFT;
|
||||||
|
viewer.frame();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|