diff --git a/OpenGL/lab4/Images/Brick-Norman-Brown.TGA b/OpenGL/lab4/Images/Brick-Norman-Brown.TGA new file mode 100644 index 0000000..4453d43 Binary files /dev/null and b/OpenGL/lab4/Images/Brick-Norman-Brown.TGA differ diff --git a/OpenGL/lab4/Images/Brick-Std-Orange.TGA b/OpenGL/lab4/Images/Brick-Std-Orange.TGA new file mode 100644 index 0000000..d4ef833 Binary files /dev/null and b/OpenGL/lab4/Images/Brick-Std-Orange.TGA differ diff --git a/OpenGL/lab4/Images/Saturn.TGA b/OpenGL/lab4/Images/Saturn.TGA new file mode 100644 index 0000000..6ad337e Binary files /dev/null and b/OpenGL/lab4/Images/Saturn.TGA differ diff --git a/OpenGL/lab4/Images/blueFlowers.png b/OpenGL/lab4/Images/blueFlowers.png new file mode 100644 index 0000000..10e3af6 Binary files /dev/null and b/OpenGL/lab4/Images/blueFlowers.png differ diff --git a/OpenGL/lab4/Images/brow.l.tga b/OpenGL/lab4/Images/brow.l.tga new file mode 100644 index 0000000..e54bbca Binary files /dev/null and b/OpenGL/lab4/Images/brow.l.tga differ diff --git a/OpenGL/lab4/Images/clockface.JPG b/OpenGL/lab4/Images/clockface.JPG new file mode 100644 index 0000000..4efbec7 Binary files /dev/null and b/OpenGL/lab4/Images/clockface.JPG differ diff --git a/OpenGL/lab4/Images/continous_smoke.rgb b/OpenGL/lab4/Images/continous_smoke.rgb new file mode 100644 index 0000000..c8ff996 Binary files /dev/null and b/OpenGL/lab4/Images/continous_smoke.rgb differ diff --git a/OpenGL/lab4/Images/dark_grey.tga b/OpenGL/lab4/Images/dark_grey.tga new file mode 100644 index 0000000..5d51601 Binary files /dev/null and b/OpenGL/lab4/Images/dark_grey.tga differ diff --git a/OpenGL/lab4/Images/dog_left_eye.jpg b/OpenGL/lab4/Images/dog_left_eye.jpg new file mode 100644 index 0000000..6c577ff Binary files /dev/null and b/OpenGL/lab4/Images/dog_left_eye.jpg differ diff --git a/OpenGL/lab4/Images/dog_right_eye.jpg b/OpenGL/lab4/Images/dog_right_eye.jpg new file mode 100644 index 0000000..9ba8a0f Binary files /dev/null and b/OpenGL/lab4/Images/dog_right_eye.jpg differ diff --git a/OpenGL/lab4/Images/eye.l.tga b/OpenGL/lab4/Images/eye.l.tga new file mode 100644 index 0000000..0369bdb Binary files /dev/null and b/OpenGL/lab4/Images/eye.l.tga differ diff --git a/OpenGL/lab4/Images/fireparticle8x8.png b/OpenGL/lab4/Images/fireparticle8x8.png new file mode 100644 index 0000000..8fc89f9 Binary files /dev/null and b/OpenGL/lab4/Images/fireparticle8x8.png differ diff --git a/OpenGL/lab4/Images/forestRoof.png b/OpenGL/lab4/Images/forestRoof.png new file mode 100644 index 0000000..83664a8 Binary files /dev/null and b/OpenGL/lab4/Images/forestRoof.png differ diff --git a/OpenGL/lab4/Images/forestWall.png b/OpenGL/lab4/Images/forestWall.png new file mode 100644 index 0000000..a151f09 Binary files /dev/null and b/OpenGL/lab4/Images/forestWall.png differ diff --git a/OpenGL/lab4/Images/land_ocean_ice_lights_2048.jpg b/OpenGL/lab4/Images/land_ocean_ice_lights_2048.jpg new file mode 100644 index 0000000..32f63da Binary files /dev/null and b/OpenGL/lab4/Images/land_ocean_ice_lights_2048.jpg differ diff --git a/OpenGL/lab4/Images/land_shallow_topo_2048.jpg b/OpenGL/lab4/Images/land_shallow_topo_2048.jpg new file mode 100644 index 0000000..d8fc0a6 Binary files /dev/null and b/OpenGL/lab4/Images/land_shallow_topo_2048.jpg differ diff --git a/OpenGL/lab4/Images/lz.rgb b/OpenGL/lab4/Images/lz.rgb new file mode 100644 index 0000000..6bc7a06 Binary files /dev/null and b/OpenGL/lab4/Images/lz.rgb differ diff --git a/OpenGL/lab4/Images/moon256128.TGA b/OpenGL/lab4/Images/moon256128.TGA new file mode 100644 index 0000000..91065f2 Binary files /dev/null and b/OpenGL/lab4/Images/moon256128.TGA differ diff --git a/OpenGL/lab4/Images/mouth.tga b/OpenGL/lab4/Images/mouth.tga new file mode 100644 index 0000000..7bb6317 Binary files /dev/null and b/OpenGL/lab4/Images/mouth.tga differ diff --git a/OpenGL/lab4/Images/nose.tga b/OpenGL/lab4/Images/nose.tga new file mode 100644 index 0000000..3e0a0bf Binary files /dev/null and b/OpenGL/lab4/Images/nose.tga differ diff --git a/OpenGL/lab4/Images/osg128.png b/OpenGL/lab4/Images/osg128.png new file mode 100644 index 0000000..4b963f2 Binary files /dev/null and b/OpenGL/lab4/Images/osg128.png differ diff --git a/OpenGL/lab4/Images/osg256.png b/OpenGL/lab4/Images/osg256.png new file mode 100644 index 0000000..e5544c7 Binary files /dev/null and b/OpenGL/lab4/Images/osg256.png differ diff --git a/OpenGL/lab4/Images/osg64.png b/OpenGL/lab4/Images/osg64.png new file mode 100644 index 0000000..03fbfd8 Binary files /dev/null and b/OpenGL/lab4/Images/osg64.png differ diff --git a/OpenGL/lab4/Images/osgshaders1.png b/OpenGL/lab4/Images/osgshaders1.png new file mode 100644 index 0000000..e4b743f Binary files /dev/null and b/OpenGL/lab4/Images/osgshaders1.png differ diff --git a/OpenGL/lab4/Images/osgshaders2.png b/OpenGL/lab4/Images/osgshaders2.png new file mode 100644 index 0000000..5c89573 Binary files /dev/null and b/OpenGL/lab4/Images/osgshaders2.png differ diff --git a/OpenGL/lab4/Images/particle.rgb b/OpenGL/lab4/Images/particle.rgb new file mode 100644 index 0000000..30ec131 Binary files /dev/null and b/OpenGL/lab4/Images/particle.rgb differ diff --git a/OpenGL/lab4/Images/primitives.gif b/OpenGL/lab4/Images/primitives.gif new file mode 100644 index 0000000..1628c7c Binary files /dev/null and b/OpenGL/lab4/Images/primitives.gif differ diff --git a/OpenGL/lab4/Images/purpleFlowers.png b/OpenGL/lab4/Images/purpleFlowers.png new file mode 100644 index 0000000..ed84c0c Binary files /dev/null and b/OpenGL/lab4/Images/purpleFlowers.png differ diff --git a/OpenGL/lab4/Images/red.tga b/OpenGL/lab4/Images/red.tga new file mode 100644 index 0000000..1cc0eb3 Binary files /dev/null and b/OpenGL/lab4/Images/red.tga differ diff --git a/OpenGL/lab4/Images/reflect.rgb b/OpenGL/lab4/Images/reflect.rgb new file mode 100644 index 0000000..db740a9 Binary files /dev/null and b/OpenGL/lab4/Images/reflect.rgb differ diff --git a/OpenGL/lab4/Images/road.png b/OpenGL/lab4/Images/road.png new file mode 100644 index 0000000..1cb533e Binary files /dev/null and b/OpenGL/lab4/Images/road.png differ diff --git a/OpenGL/lab4/Images/rockwall.png b/OpenGL/lab4/Images/rockwall.png new file mode 100644 index 0000000..3d6d9ec Binary files /dev/null and b/OpenGL/lab4/Images/rockwall.png differ diff --git a/OpenGL/lab4/Images/rockwall_NH.png b/OpenGL/lab4/Images/rockwall_NH.png new file mode 100644 index 0000000..0b71273 Binary files /dev/null and b/OpenGL/lab4/Images/rockwall_NH.png differ diff --git a/OpenGL/lab4/Images/skin.tga b/OpenGL/lab4/Images/skin.tga new file mode 100644 index 0000000..27011c4 Binary files /dev/null and b/OpenGL/lab4/Images/skin.tga differ diff --git a/OpenGL/lab4/Images/skymap.jpg b/OpenGL/lab4/Images/skymap.jpg new file mode 100644 index 0000000..eaf0f01 Binary files /dev/null and b/OpenGL/lab4/Images/skymap.jpg differ diff --git a/OpenGL/lab4/Images/smoke.rgb b/OpenGL/lab4/Images/smoke.rgb new file mode 100644 index 0000000..59a905e Binary files /dev/null and b/OpenGL/lab4/Images/smoke.rgb differ diff --git a/OpenGL/lab4/Images/tank.rgb b/OpenGL/lab4/Images/tank.rgb new file mode 100644 index 0000000..7d7e574 Binary files /dev/null and b/OpenGL/lab4/Images/tank.rgb differ diff --git a/OpenGL/lab4/Images/tree0.rgba b/OpenGL/lab4/Images/tree0.rgba new file mode 100644 index 0000000..35531f7 Binary files /dev/null and b/OpenGL/lab4/Images/tree0.rgba differ diff --git a/OpenGL/lab4/Images/water.rgb b/OpenGL/lab4/Images/water.rgb new file mode 100644 index 0000000..703c6bf Binary files /dev/null and b/OpenGL/lab4/Images/water.rgb differ diff --git a/OpenGL/lab4/Images/white.rgb b/OpenGL/lab4/Images/white.rgb new file mode 100644 index 0000000..09d9139 Binary files /dev/null and b/OpenGL/lab4/Images/white.rgb differ diff --git a/OpenGL/lab4/Images/whitemetal_diffuse.jpg b/OpenGL/lab4/Images/whitemetal_diffuse.jpg new file mode 100644 index 0000000..e34961d Binary files /dev/null and b/OpenGL/lab4/Images/whitemetal_diffuse.jpg differ diff --git a/OpenGL/lab4/Images/whitemetal_normal.jpg b/OpenGL/lab4/Images/whitemetal_normal.jpg new file mode 100644 index 0000000..958351d Binary files /dev/null and b/OpenGL/lab4/Images/whitemetal_normal.jpg differ diff --git a/OpenGL/lab4/Makefile b/OpenGL/lab4/Makefile new file mode 100644 index 0000000..2166483 --- /dev/null +++ b/OpenGL/lab4/Makefile @@ -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}/* \ No newline at end of file diff --git a/OpenGL/lab4/clock.osgt b/OpenGL/lab4/clock.osgt new file mode 100644 index 0000000..088c07c --- /dev/null +++ b/OpenGL/lab4/clock.osgt @@ -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 + } + + } + } +} diff --git a/OpenGL/lab4/main.cpp b/OpenGL/lab4/main.cpp new file mode 100644 index 0000000..a61c2f3 --- /dev/null +++ b/OpenGL/lab4/main.cpp @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include +#include + +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 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(thisFT - lastFT); + lastFT = thisFT; + viewer.frame(); + } + + return 0; +} \ No newline at end of file