diff --git "a/21551005\350\203\241\345\275\254/homework2/.vs/homework2/v14/.suo" "b/21551005\350\203\241\345\275\254/homework2/.vs/homework2/v14/.suo" new file mode 100644 index 0000000..f1e9a75 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/.vs/homework2/v14/.suo" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/Debug/homework2.exe" "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.exe" new file mode 100644 index 0000000..0df66b6 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.exe" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/Debug/homework2.ilk" "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.ilk" new file mode 100644 index 0000000..e60e7c8 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.ilk" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/Debug/homework2.pdb" "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.pdb" new file mode 100644 index 0000000..c71b32b Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/Debug/homework2.pdb" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2.opensdf" "b/21551005\350\203\241\345\275\254/homework2/homework2.opensdf" new file mode 100644 index 0000000..f6b04a6 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2.opensdf" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2.sdf" "b/21551005\350\203\241\345\275\254/homework2/homework2.sdf" new file mode 100644 index 0000000..42a5c47 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2.sdf" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2.sln" "b/21551005\350\203\241\345\275\254/homework2/homework2.sln" new file mode 100644 index 0000000..b8f23c2 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2.sln" @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "homework2", "homework2\homework2.vcxproj", "{25C2F559-CAF1-49EE-AA43-8F9D0B866796}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Debug|x64.ActiveCfg = Debug|x64 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Debug|x64.Build.0 = Debug|x64 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Debug|x86.ActiveCfg = Debug|Win32 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Debug|x86.Build.0 = Debug|Win32 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Release|x64.ActiveCfg = Release|x64 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Release|x64.Build.0 = Release|x64 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Release|x86.ActiveCfg = Release|Win32 + {25C2F559-CAF1-49EE-AA43-8F9D0B866796}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.log" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.log" new file mode 100644 index 0000000..e4fd87c --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.log" @@ -0,0 +1,16 @@ +生成启动时间为 2016/1/13 21:26:53。 + 1>项目“C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\homework2\homework2.vcxproj”在节点 2 上(Build 个目标)。 + 1>ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /sdl /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Yu"stdafx.h" /Fp"Debug\homework2.pch" /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TP /analyze- /errorReport:prompt /D _CRT_SECURE_NO_WARNINGS homework2.cpp + homework2.cpp + 1>c:\users\zz0292\documents\visual studio 2015\projects\homework2\homework2\homework2.cpp(68): warning C4838: 从“double”转换到“GLfloat”需要收缩转换 + Link: + C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\Debug\homework2.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\Debug\homework2.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\Debug\homework2.lib" /MACHINE:X86 Debug\homework2.res + Debug\homework2.obj + Debug\stdafx.obj + homework2.vcxproj -> C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\Debug\homework2.exe + 1>已完成生成项目“C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\homework2\homework2.vcxproj”(Build 个目标)的操作。 + +已成功生成。 + +已用时间 00:00:01.44 diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.obj.enc" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.obj.enc" new file mode 100644 index 0000000..f4bf759 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.obj.enc" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.res" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.res" new file mode 100644 index 0000000..e1dec6f Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.res" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.command.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.command.1.tlog" new file mode 100644 index 0000000..8e6b300 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.command.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.read.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.read.1.tlog" new file mode 100644 index 0000000..30a6e5e Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.read.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.write.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.write.1.tlog" new file mode 100644 index 0000000..96fde75 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/CL.write.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/homework2.lastbuildstate" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/homework2.lastbuildstate" new file mode 100644 index 0000000..bab3ca4 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/homework2.lastbuildstate" @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit +Debug|Win32|C:\Users\zz0292\Documents\Visual Studio 2015\Projects\homework2\| diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.command.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.command.1.tlog" new file mode 100644 index 0000000..e0c0231 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.command.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.read.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.read.1.tlog" new file mode 100644 index 0000000..ddeefae Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.read.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.write.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.write.1.tlog" new file mode 100644 index 0000000..598979c Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/link.write.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.command.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.command.1.tlog" new file mode 100644 index 0000000..e1cd2b1 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.command.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.read.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.read.1.tlog" new file mode 100644 index 0000000..d6b4418 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.read.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.write.1.tlog" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.write.1.tlog" new file mode 100644 index 0000000..0b449a2 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/homework2.tlog/rc.write.1.tlog" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.idb" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.idb" new file mode 100644 index 0000000..8078b9c Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.idb" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.pdb" "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.pdb" new file mode 100644 index 0000000..71c9b66 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/Debug/vc140.pdb" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/ReadMe.txt" "b/21551005\350\203\241\345\275\254/homework2/homework2/ReadMe.txt" new file mode 100644 index 0000000..b161106 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/ReadMe.txt" @@ -0,0 +1,30 @@ +======================================================================== + 控制台应用程序:homework2 项目概述 +======================================================================== + +应用程序向导已为您创建了此 homework2 应用程序。 + +本文件概要介绍组成 homework2 应用程序的每个文件的内容。 + + +homework2.vcxproj + 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 + +homework2.vcxproj.filters + 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 + +homework2.cpp + 这是主应用程序源文件。 + +///////////////////////////////////////////////////////////////////////////// +其他标准文件: + +StdAfx.h, StdAfx.cpp + 这些文件用于生成名为 homework2.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 + +///////////////////////////////////////////////////////////////////////////// +其他注释: + +应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 + +///////////////////////////////////////////////////////////////////////////// diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/earth.bmp" "b/21551005\350\203\241\345\275\254/homework2/homework2/earth.bmp" new file mode 100644 index 0000000..5ac02fc Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/earth.bmp" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.aps" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.aps" new file mode 100644 index 0000000..a210be5 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.aps" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.cpp" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.cpp" new file mode 100644 index 0000000..bc1bc24 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.cpp" @@ -0,0 +1,140 @@ +// homework2.cpp : ̨Ӧóڵ㡣 +// + +#include "stdafx.h" + + +#include "LoadBMP.h" + +void myinit(void) +{ + glClearColor(0.0, 0.0, 0.0, 0.0); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); //öά + + GLfloat light0_ambient[] = { 1, 1, 1, 1 }; // + GLfloat light0_diffuse[] = { 1, 1, 1, 1 }; //ɢ + GLfloat light0_position[] = { 0, 0, 0, 1 }; //Դλ + + glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, light0_position); + + LoadAllTextures(); // +} + +void myidle() +{ + day += angle; + glutPostRedisplay(); + +} + +void mymouse(int button, int state, int x, int y) +{ + if (state == GLUT_DOWN && button == GLUT_LEFT_BUTTON) { + if (first) + { + glutIdleFunc(myidle); + first = !first; + } + else + { + glutIdleFunc(0); + first = !first; + } + } +} + +void mykeyboard(unsigned char key, int x, int y) +{ + if (key == 27) + exit(0); +} + +void mydisplay(void) +{ + year = day / 365; + month = day / 30; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + GLfloat mat_ambient1[] = { 1,0,0,1 }; + GLfloat mat_emission[] = { 1,1,1,0 }; + + GLfloat mat_ambient2[] = { 0.4,0.4,0.8,1 }; + GLfloat no_emission[] = { 0,0,0,1 }; + + glPushMatrix(); + glBindTexture(GL_TEXTURE_2D, sun->texID); + glRotatef(month, 0.0, 1.0, 0.0); //̫ת + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient1); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glRotatef(90, -1, 0, 0); + gltDrawSphere(1.0, 40, 40); //̫ + glPopMatrix(); + + glPushMatrix(); + glRotatef(year, 0.0, 1.0, 0.0); //һ̫תת + glPushMatrix(); + glBindTexture(GL_TEXTURE_2D, earth->texID); + glTranslatef(3.0, 0.0, 0.0); + glRotatef(month, 0.0, 1.0, 0.0); //ת + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient2); + glMaterialfv(GL_FRONT, GL_EMISSION, no_emission); + glRotatef(90, -1, 0, 0); + gltDrawSphere(0.4, 40, 40); //Ƶ + glPopMatrix(); + + glPushMatrix(); + glBindTexture(GL_TEXTURE_2D, moon->texID); + glTranslatef(3.0, 0.0, 0.0); + glRotatef(60, -1, 1, 0); + glRotatef(month, 0, 1.0, 0); //Ƶת + glTranslatef(0.6, 0.0, 0.0); + glRotatef(90, -1, 0, 0); + gltDrawSphere(0.07, 20, 20); // + glPopMatrix(); + glPopMatrix(); + + glFlush(); + glutSwapBuffers(); +} + +void myreshape(int w, int h) +{ + glViewport(0, 0, (GLsizei)w, (GLsizei)h); //ָӿڴС + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1, 20); //͸ͶӰ + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + gluLookAt(0.0, -5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //ָλ +} + +int main(int argc, char** argv) +{ + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); + glutInitWindowSize(1000, 600); + glutInitWindowPosition(100, 100); + glutCreateWindow("̫ģ"); + myinit(); + + glutDisplayFunc(mydisplay); + glutReshapeFunc(myreshape); + glutIdleFunc(myidle); + glutMouseFunc(mymouse); + glutKeyboardFunc(mykeyboard); + + glutMainLoop(); + return 0; +} + + diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.rc" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.rc" new file mode 100644 index 0000000..866bf2e Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.rc" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj" new file mode 100644 index 0000000..3281a27 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj" @@ -0,0 +1,169 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {25C2F559-CAF1-49EE-AA43-8F9D0B866796} + Win32Proj + homework2 + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + /D _CRT_SECURE_NO_WARNINGS %(AdditionalOptions) + + + Windows + true + + + + + Use + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + Use + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + \ No newline at end of file diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.filters" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.filters" new file mode 100644 index 0000000..bcd9536 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.filters" @@ -0,0 +1,47 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + + + 资源文件 + + + \ No newline at end of file diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.user" "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.user" new file mode 100644 index 0000000..abe8dd8 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/homework2.vcxproj.user" @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/loadbmp.h" "b/21551005\350\203\241\345\275\254/homework2/homework2/loadbmp.h" new file mode 100644 index 0000000..8746702 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/loadbmp.h" @@ -0,0 +1,204 @@ +#define BITMAP_ID 0x4D42 +#define PI 3.1415926 +#include +#include +#include +#include +#include + +#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) + +//---------- ݽṹ +typedef struct { + int width; // + int height; //߶ + unsigned int texID; // ID + unsigned char * data; //ʵ +}texture; + + +static float year = 0, month = 0, day = 0, angle = 30; +static bool first = false; + +texture * sun, *earth, *moon; //ָ + + //---------- λͼΪ +unsigned char * LoadBmpFile(char * filename, BITMAPINFOHEADER * bmpInfoHeader) { + + FILE * file; + BITMAPFILEHEADER bmpFileHeader; + unsigned char * image; + unsigned int imageIdx = 0; + unsigned char tempRGB; + + file = fopen(filename, "rb"); + if (file == NULL) + return 0; + + fread(&bmpFileHeader, sizeof(BITMAPFILEHEADER), 1, file); // ȡ BMP ļͷ + + if (bmpFileHeader.bfType != BITMAP_ID) // ֤Ƿһ BMP ļ + { + fclose(file); + return 0; + } + + fread(bmpInfoHeader, sizeof(BITMAPINFOHEADER), 1, file); // λͼϢͷ + fseek(file, bmpFileHeader.bfOffBits, SEEK_SET); // ļָƵλͼݵĿʼ + image = (unsigned char *)malloc(bmpInfoHeader->biSizeImage); // ڴλͼ + + if (!image) + { + free(image); + fclose(file); + return 0; + } + + + fread(image, 1, bmpInfoHeader->biSizeImage, file); // ȡλͼ + + if (image == NULL) + { + fclose(file); + return 0; + } + + // ת R B ֵԵõ RGBΪλͼɫʽ BGR + for (imageIdx = 0; imageIdx < bmpInfoHeader->biSizeImage; imageIdx += 3) + { + tempRGB = image[imageIdx]; + image[imageIdx] = image[imageIdx + 2]; + image[imageIdx + 2] = tempRGB; + } + + fclose(file); + return image; + +} + +//---------- ļ +texture * LoadTexFile(char * filename) { + + BITMAPINFOHEADER texInfo; + texture * thisTexture; + + thisTexture = (texture *)malloc(sizeof(texture)); + if (thisTexture == NULL) + return 0; + + thisTexture->data = LoadBmpFile(filename, &texInfo); // ݲЧ + if (thisTexture->data == NULL) + { + free(thisTexture); + return 0; + } + + thisTexture->width = texInfo.biWidth; // Ŀ͸ + thisTexture->height = texInfo.biHeight; + + glGenTextures(1, &thisTexture->texID); // + + return thisTexture; +} + +//---------- ʼݺ +BOOL LoadAllTextures() { + + sun = LoadTexFile("sun.bmp"); + if (sun == NULL) + return FALSE; + + glBindTexture(GL_TEXTURE_2D, sun->texID); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, sun->width, sun->height, GL_RGB, GL_UNSIGNED_BYTE, sun->data); + + + earth = LoadTexFile("earth.bmp"); + if (earth == NULL) + return FALSE; + + glBindTexture(GL_TEXTURE_2D, earth->texID); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, earth->width, earth->height, GL_RGB, GL_UNSIGNED_BYTE, earth->data); + + + moon = LoadTexFile("moon.bmp"); + if (moon == NULL) + return FALSE; + + glBindTexture(GL_TEXTURE_2D, moon->texID); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, moon->width, moon->height, GL_RGB, GL_UNSIGNED_BYTE, moon->data); + + return TRUE; +} + +void gltDrawSphere(GLfloat fRadius, GLint iSlices, GLint iStacks) +{ + GLfloat drho = (GLfloat)(3.141592653589) / (GLfloat)iStacks; + GLfloat dtheta = 2.0f * (GLfloat)(3.141592653589) / (GLfloat)iSlices; + GLfloat ds = 1.0f / (GLfloat)iSlices; + GLfloat dt = 1.0f / (GLfloat)iStacks; + GLfloat t = 1.0f; + GLfloat s = 0.0f; + GLint i, j; + + for (i = 0; i < iStacks; i++) + { + GLfloat rho = (GLfloat)i * drho; + GLfloat srho = (GLfloat)(sin(rho)); + GLfloat crho = (GLfloat)(cos(rho)); + GLfloat srhodrho = (GLfloat)(sin(rho + drho)); + GLfloat crhodrho = (GLfloat)(cos(rho + drho)); + + + glBegin(GL_TRIANGLE_STRIP); + s = 0.0f; + for (j = 0; j <= iSlices; j++) + { + GLfloat theta = (j == iSlices) ? 0.0f : j * dtheta; + GLfloat stheta = (GLfloat)(-sin(theta)); + GLfloat ctheta = (GLfloat)(cos(theta)); + + GLfloat x = stheta * srho; + GLfloat y = ctheta * srho; + GLfloat z = crho; + + glTexCoord2f(s, t); + glNormal3f(x, y, z); + glVertex3f(x * fRadius, y * fRadius, z * fRadius); + + x = stheta * srhodrho; + y = ctheta * srhodrho; + z = crhodrho; + glTexCoord2f(s, t - dt); + s += ds; + glNormal3f(x, y, z); + glVertex3f(x * fRadius, y * fRadius, z * fRadius); + } + glEnd(); + + t -= dt; + } +} + +void drawCircle(GLfloat r) +{ + int j = 0; + glBegin(GL_POINTS); + for (j = 0; j<100; j++) + { + GLfloat theta = j * 2 * PI / 100; + glVertex3f(r*cos(theta), 0.0f, r*sin(theta)); + } + glEnd(); +} diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/moon.bmp" "b/21551005\350\203\241\345\275\254/homework2/homework2/moon.bmp" new file mode 100644 index 0000000..b954bfc Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/moon.bmp" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/resource.h" "b/21551005\350\203\241\345\275\254/homework2/homework2/resource.h" new file mode 100644 index 0000000..9ad831e --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/resource.h" @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by homework2.rc +// +#define IDB_BITMAP1 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 103 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.cpp" "b/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.cpp" new file mode 100644 index 0000000..a7e6309 --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.cpp" @@ -0,0 +1,8 @@ +// stdafx.cpp : ֻ׼ļԴļ +// homework2.pch ΪԤͷ +// stdafx.obj ԤϢ + +#include "stdafx.h" + +// TODO: STDAFX.H κĸͷļ +//ڴļ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.h" "b/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.h" new file mode 100644 index 0000000..baa4bbc --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/stdafx.h" @@ -0,0 +1,15 @@ +// stdafx.h : ׼ϵͳļİļ +// Ǿʹõĵ +// ضĿİļ +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: ڴ˴óҪͷļ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/sun.bmp" "b/21551005\350\203\241\345\275\254/homework2/homework2/sun.bmp" new file mode 100644 index 0000000..5f1fc9f Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/homework2/sun.bmp" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/homework2/targetver.h" "b/21551005\350\203\241\345\275\254/homework2/homework2/targetver.h" new file mode 100644 index 0000000..416cebf --- /dev/null +++ "b/21551005\350\203\241\345\275\254/homework2/homework2/targetver.h" @@ -0,0 +1,8 @@ +#pragma once + +// SDKDDKVer.h õ߰汾 Windows ƽ̨ + +// ҪΪǰ Windows ƽ̨Ӧó WinSDKVer.h +// _WIN32_WINNT ΪҪֵ֧ƽ̨Ȼٰ SDKDDKVer.h + +#include diff --git "a/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-1e994fca.ipch" "b/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-1e994fca.ipch" new file mode 100644 index 0000000..a088a97 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-1e994fca.ipch" differ diff --git "a/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-f6172d28.ipch" "b/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-f6172d28.ipch" new file mode 100644 index 0000000..851dfa1 Binary files /dev/null and "b/21551005\350\203\241\345\275\254/homework2/ipch/HOMEWORK2-22afcf94/HOMEWORK2-f6172d28.ipch" differ