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;
|
||||
}
|