├── .DS_Store
├── Metal学习
├── .DS_Store
├── Images
│ ├── .DS_Store
│ ├── CAMetalLayer.png
│ ├── CPU&GPU pipelining.png
│ ├── CPU&GPU.png
│ ├── MetalDevice.png
│ ├── MetalTriangle.png
│ ├── Metal绘制三角形.gliffy
│ ├── OpenGL绘制三角形.png
│ ├── opengl&metal性能对比.png
│ └── 三角形.png
├── MetalTriangle
│ ├── .DS_Store
│ ├── MetalTriangle.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcuserdata
│ │ │ │ └── tomxiang.xcuserdatad
│ │ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── MetalTriangle.xcscheme
│ │ │ └── xcschememanagement.plist
│ ├── MetalTriangle
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Shaders.metal
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ ├── MetalTriangleTests
│ │ ├── Info.plist
│ │ └── MetalTriangleTests.m
│ └── MetalTriangleUITests
│ │ ├── Info.plist
│ │ └── MetalTriangleUITests.m
├── Metal学习.md
└── PDF
│ ├── .DS_Store
│ ├── 602_adopting_metal_part_1.pdf
│ └── 604_working_with_metal_fundamentals.pdf
├── Note
├── .DS_Store
├── 1环境搭建
│ ├── .DS_Store
│ ├── Images
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ ├── 6.png
│ │ ├── 7.png
│ │ └── 8.png
│ └── Mac+OpenGL环境搭建.md
├── 2窗口绘制
│ ├── .DS_Store
│ ├── 1.hellowindow
│ │ ├── .DS_Store
│ │ ├── testHelloworld.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcuserdata
│ │ │ │ │ └── tomxiang.xcuserdatad
│ │ │ │ │ └── UserInterfaceState.xcuserstate
│ │ │ └── xcuserdata
│ │ │ │ └── tomxiang.xcuserdatad
│ │ │ │ ├── xcdebugger
│ │ │ │ └── Breakpoints_v2.xcbkptlist
│ │ │ │ └── xcschemes
│ │ │ │ ├── testHelloworld.xcscheme
│ │ │ │ └── xcschememanagement.plist
│ │ └── testHelloworld
│ │ │ └── main.cpp
│ ├── Images
│ │ └── .DS_Store
│ └── 窗口绘制.md
└── 3.绘制三角形
│ ├── .DS_Store
│ ├── Images
│ ├── .DS_Store
│ ├── 1.png
│ └── 2.png
│ ├── 绘制三角形.md
│ ├── 绘制流程图.gliffy
│ └── 绘制流程图.png
├── PDF
├── OpenGL Insights.pdf
└── learnopengl-cn.pdf
├── README.md
├── glm
├── .DS_Store
├── .appveyor.yml
├── .gitignore
├── .travis.yml
├── CMakeLists.txt
├── cmake
│ ├── glm.pc.in
│ ├── glmBuildConfig.cmake.in
│ └── glmConfig.cmake.in
├── copying.txt
├── doc
│ ├── api
│ │ ├── a00001.html
│ │ ├── a00001_source.html
│ │ ├── a00002.html
│ │ ├── a00002_source.html
│ │ ├── a00003.html
│ │ ├── a00003_source.html
│ │ ├── a00004.html
│ │ ├── a00004_source.html
│ │ ├── a00005.html
│ │ ├── a00005_source.html
│ │ ├── a00006.html
│ │ ├── a00006_source.html
│ │ ├── a00007.html
│ │ ├── a00007_source.html
│ │ ├── a00008.html
│ │ ├── a00008_source.html
│ │ ├── a00009.html
│ │ ├── a00009_source.html
│ │ ├── a00010.html
│ │ ├── a00010_source.html
│ │ ├── a00011.html
│ │ ├── a00011_source.html
│ │ ├── a00012.html
│ │ ├── a00012_source.html
│ │ ├── a00013.html
│ │ ├── a00013_source.html
│ │ ├── a00014.html
│ │ ├── a00014_source.html
│ │ ├── a00015.html
│ │ ├── a00015_source.html
│ │ ├── a00016.html
│ │ ├── a00016_source.html
│ │ ├── a00017.html
│ │ ├── a00017_source.html
│ │ ├── a00018.html
│ │ ├── a00018_source.html
│ │ ├── a00019.html
│ │ ├── a00019_source.html
│ │ ├── a00020.html
│ │ ├── a00020_source.html
│ │ ├── a00021.html
│ │ ├── a00021_source.html
│ │ ├── a00022.html
│ │ ├── a00022_source.html
│ │ ├── a00023.html
│ │ ├── a00023_source.html
│ │ ├── a00024.html
│ │ ├── a00024_source.html
│ │ ├── a00025.html
│ │ ├── a00025_source.html
│ │ ├── a00026.html
│ │ ├── a00026_source.html
│ │ ├── a00027.html
│ │ ├── a00027_source.html
│ │ ├── a00028.html
│ │ ├── a00028_source.html
│ │ ├── a00029.html
│ │ ├── a00029_source.html
│ │ ├── a00030.html
│ │ ├── a00030_source.html
│ │ ├── a00031.html
│ │ ├── a00031_source.html
│ │ ├── a00032.html
│ │ ├── a00032_source.html
│ │ ├── a00033.html
│ │ ├── a00033_source.html
│ │ ├── a00034.html
│ │ ├── a00034_source.html
│ │ ├── a00035.html
│ │ ├── a00035_source.html
│ │ ├── a00036.html
│ │ ├── a00036_source.html
│ │ ├── a00037.html
│ │ ├── a00037_source.html
│ │ ├── a00038.html
│ │ ├── a00038_source.html
│ │ ├── a00039.html
│ │ ├── a00039_source.html
│ │ ├── a00040.html
│ │ ├── a00040_source.html
│ │ ├── a00041.html
│ │ ├── a00041_source.html
│ │ ├── a00042.html
│ │ ├── a00042_source.html
│ │ ├── a00043.html
│ │ ├── a00043_source.html
│ │ ├── a00044.html
│ │ ├── a00044_source.html
│ │ ├── a00045.html
│ │ ├── a00045_source.html
│ │ ├── a00046.html
│ │ ├── a00046_source.html
│ │ ├── a00047.html
│ │ ├── a00047_source.html
│ │ ├── a00048.html
│ │ ├── a00048_source.html
│ │ ├── a00049.html
│ │ ├── a00049_source.html
│ │ ├── a00050_source.html
│ │ ├── a00051.html
│ │ ├── a00051_source.html
│ │ ├── a00052.html
│ │ ├── a00052_source.html
│ │ ├── a00053.html
│ │ ├── a00053_source.html
│ │ ├── a00054.html
│ │ ├── a00054_source.html
│ │ ├── a00055.html
│ │ ├── a00055_source.html
│ │ ├── a00056.html
│ │ ├── a00056_source.html
│ │ ├── a00057.html
│ │ ├── a00057_source.html
│ │ ├── a00058_source.html
│ │ ├── a00059.html
│ │ ├── a00059_source.html
│ │ ├── a00060.html
│ │ ├── a00060_source.html
│ │ ├── a00061.html
│ │ ├── a00061_source.html
│ │ ├── a00062.html
│ │ ├── a00062_source.html
│ │ ├── a00063.html
│ │ ├── a00063_source.html
│ │ ├── a00064.html
│ │ ├── a00064_source.html
│ │ ├── a00065.html
│ │ ├── a00065_source.html
│ │ ├── a00066.html
│ │ ├── a00066_source.html
│ │ ├── a00067.html
│ │ ├── a00067_source.html
│ │ ├── a00068.html
│ │ ├── a00068_source.html
│ │ ├── a00069.html
│ │ ├── a00069_source.html
│ │ ├── a00070.html
│ │ ├── a00070_source.html
│ │ ├── a00071.html
│ │ ├── a00071_source.html
│ │ ├── a00072.html
│ │ ├── a00072_source.html
│ │ ├── a00073.html
│ │ ├── a00073_source.html
│ │ ├── a00074.html
│ │ ├── a00074_source.html
│ │ ├── a00075.html
│ │ ├── a00075_source.html
│ │ ├── a00076.html
│ │ ├── a00076_source.html
│ │ ├── a00077.html
│ │ ├── a00077_source.html
│ │ ├── a00078.html
│ │ ├── a00078_source.html
│ │ ├── a00079.html
│ │ ├── a00079_source.html
│ │ ├── a00080.html
│ │ ├── a00080_source.html
│ │ ├── a00081.html
│ │ ├── a00081_source.html
│ │ ├── a00082_source.html
│ │ ├── a00083.html
│ │ ├── a00083_source.html
│ │ ├── a00084.html
│ │ ├── a00084_source.html
│ │ ├── a00085.html
│ │ ├── a00085_source.html
│ │ ├── a00086.html
│ │ ├── a00086_source.html
│ │ ├── a00087.html
│ │ ├── a00087_source.html
│ │ ├── a00088.html
│ │ ├── a00088_source.html
│ │ ├── a00089.html
│ │ ├── a00089_source.html
│ │ ├── a00090.html
│ │ ├── a00090_source.html
│ │ ├── a00091.html
│ │ ├── a00091_source.html
│ │ ├── a00092.html
│ │ ├── a00092_source.html
│ │ ├── a00093.html
│ │ ├── a00093_source.html
│ │ ├── a00094.html
│ │ ├── a00094_source.html
│ │ ├── a00095.html
│ │ ├── a00095_source.html
│ │ ├── a00096.html
│ │ ├── a00096_source.html
│ │ ├── a00097.html
│ │ ├── a00097_source.html
│ │ ├── a00098.html
│ │ ├── a00098_source.html
│ │ ├── a00099.html
│ │ ├── a00099_source.html
│ │ ├── a00100.html
│ │ ├── a00100_source.html
│ │ ├── a00101.html
│ │ ├── a00101_source.html
│ │ ├── a00102.html
│ │ ├── a00102_source.html
│ │ ├── a00103.html
│ │ ├── a00103_source.html
│ │ ├── a00104.html
│ │ ├── a00104_source.html
│ │ ├── a00105.html
│ │ ├── a00105_source.html
│ │ ├── a00106.html
│ │ ├── a00106_source.html
│ │ ├── a00107.html
│ │ ├── a00107_source.html
│ │ ├── a00108.html
│ │ ├── a00108_source.html
│ │ ├── a00109.html
│ │ ├── a00109_source.html
│ │ ├── a00110.html
│ │ ├── a00110_source.html
│ │ ├── a00111.html
│ │ ├── a00111_source.html
│ │ ├── a00112.html
│ │ ├── a00112_source.html
│ │ ├── a00113.html
│ │ ├── a00113_source.html
│ │ ├── a00114.html
│ │ ├── a00114_source.html
│ │ ├── a00115.html
│ │ ├── a00115_source.html
│ │ ├── a00116.html
│ │ ├── a00116_source.html
│ │ ├── a00117.html
│ │ ├── a00117_source.html
│ │ ├── a00118.html
│ │ ├── a00118_source.html
│ │ ├── a00119.html
│ │ ├── a00119_source.html
│ │ ├── a00120.html
│ │ ├── a00120_source.html
│ │ ├── a00121.html
│ │ ├── a00121_source.html
│ │ ├── a00122.html
│ │ ├── a00122_source.html
│ │ ├── a00123.html
│ │ ├── a00123_source.html
│ │ ├── a00124.html
│ │ ├── a00124_source.html
│ │ ├── a00125.html
│ │ ├── a00125_source.html
│ │ ├── a00126.html
│ │ ├── a00126_source.html
│ │ ├── a00127.html
│ │ ├── a00127_source.html
│ │ ├── a00128.html
│ │ ├── a00128_source.html
│ │ ├── a00129.html
│ │ ├── a00129_source.html
│ │ ├── a00130.html
│ │ ├── a00130_source.html
│ │ ├── a00131.html
│ │ ├── a00131_source.html
│ │ ├── a00132.html
│ │ ├── a00132_source.html
│ │ ├── a00133.html
│ │ ├── a00133_source.html
│ │ ├── a00134.html
│ │ ├── a00134_source.html
│ │ ├── a00135.html
│ │ ├── a00135_source.html
│ │ ├── a00136.html
│ │ ├── a00136_source.html
│ │ ├── a00137.html
│ │ ├── a00137_source.html
│ │ ├── a00138.html
│ │ ├── a00138_source.html
│ │ ├── a00139.html
│ │ ├── a00139_source.html
│ │ ├── a00140.html
│ │ ├── a00140_source.html
│ │ ├── a00146.html
│ │ ├── a00147.html
│ │ ├── a00148.html
│ │ ├── a00149.html
│ │ ├── a00150.html
│ │ ├── a00151.html
│ │ ├── a00152.html
│ │ ├── a00153.html
│ │ ├── a00154.html
│ │ ├── a00155.html
│ │ ├── a00156.html
│ │ ├── a00157.html
│ │ ├── a00158.html
│ │ ├── a00159.html
│ │ ├── a00160.html
│ │ ├── a00161.html
│ │ ├── a00162.html
│ │ ├── a00163.html
│ │ ├── a00164.html
│ │ ├── a00165.html
│ │ ├── a00166.html
│ │ ├── a00167.html
│ │ ├── a00168.html
│ │ ├── a00169.html
│ │ ├── a00170.html
│ │ ├── a00171.html
│ │ ├── a00172.html
│ │ ├── a00173.html
│ │ ├── a00174.html
│ │ ├── a00175.html
│ │ ├── a00176.html
│ │ ├── a00177.html
│ │ ├── a00178.html
│ │ ├── a00179.html
│ │ ├── a00180.html
│ │ ├── a00181.html
│ │ ├── a00182.html
│ │ ├── a00183.html
│ │ ├── a00184.html
│ │ ├── a00185.html
│ │ ├── a00186.html
│ │ ├── a00187.html
│ │ ├── a00188.html
│ │ ├── a00189.html
│ │ ├── a00190.html
│ │ ├── a00191.html
│ │ ├── a00192.html
│ │ ├── a00193.html
│ │ ├── a00194.html
│ │ ├── a00195.html
│ │ ├── a00196.html
│ │ ├── a00197.html
│ │ ├── a00198.html
│ │ ├── a00199.html
│ │ ├── a00200.html
│ │ ├── a00201.html
│ │ ├── a00202.html
│ │ ├── a00203.html
│ │ ├── a00204.html
│ │ ├── a00205.html
│ │ ├── a00206.html
│ │ ├── a00207.html
│ │ ├── a00208.html
│ │ ├── a00209.html
│ │ ├── a00210.html
│ │ ├── a00211.html
│ │ ├── a00212.html
│ │ ├── a00213.html
│ │ ├── a00214.html
│ │ ├── a00215.html
│ │ ├── a00216.html
│ │ ├── a00217.html
│ │ ├── a00218.html
│ │ ├── a00219.html
│ │ ├── a00220.html
│ │ ├── a00221.html
│ │ ├── a00222.html
│ │ ├── a00223.html
│ │ ├── a00224.html
│ │ ├── a00225.html
│ │ ├── a00226.html
│ │ ├── a00227.html
│ │ ├── a00228.html
│ │ ├── a00229.html
│ │ ├── a00230.html
│ │ ├── a00231.html
│ │ ├── a00232.html
│ │ ├── a00233.html
│ │ ├── a00234.html
│ │ ├── a00235.html
│ │ ├── a00236.html
│ │ ├── a00237.html
│ │ ├── a00238.html
│ │ ├── arrowdown.png
│ │ ├── arrowright.png
│ │ ├── bc_s.png
│ │ ├── bdwn.png
│ │ ├── closed.png
│ │ ├── dir_1f76e953200861345293ade84ac7fb6c.html
│ │ ├── dir_275089585c7fc1b5fd5d7d42c69cb1da.html
│ │ ├── dir_577c788b67d63fb3b3b5752bd495d0f2.html
│ │ ├── dir_5ce58d942b2d0776e17a9a58abc01e04.html
│ │ ├── dir_7b98f88bffbed4b390b5f8f520d9c08e.html
│ │ ├── dir_8d176b5b7dd0ae42ea6876078f2bde49.html
│ │ ├── dir_9440d7c11b99dcd7e5d369c7cf9802fe.html
│ │ ├── dir_e29b03b892e0e25920d021a614d4db9b.html
│ │ ├── dir_e529a619cfdec1fa4c331fb042fd332f.html
│ │ ├── doc.png
│ │ ├── doxygen.css
│ │ ├── doxygen.png
│ │ ├── dynsections.js
│ │ ├── files.html
│ │ ├── folderclosed.png
│ │ ├── folderopen.png
│ │ ├── index.html
│ │ ├── jquery.js
│ │ ├── logo.png
│ │ ├── modules.html
│ │ ├── nav_f.png
│ │ ├── nav_g.png
│ │ ├── nav_h.png
│ │ ├── open.png
│ │ ├── splitbar.png
│ │ ├── sync_off.png
│ │ ├── sync_on.png
│ │ ├── tab_a.png
│ │ ├── tab_b.png
│ │ ├── tab_h.png
│ │ ├── tab_s.png
│ │ └── tabs.css
│ ├── glm.docx
│ ├── glm.pdf
│ ├── logo.png
│ ├── man.doxy
│ ├── pages.doxy
│ └── theme
│ │ ├── doxygen.css
│ │ └── tabs.css
├── glm
│ ├── CMakeLists.txt
│ ├── common.hpp
│ ├── detail
│ │ ├── _features.hpp
│ │ ├── _fixes.hpp
│ │ ├── _noise.hpp
│ │ ├── _swizzle.hpp
│ │ ├── _swizzle_func.hpp
│ │ ├── _vectorize.hpp
│ │ ├── dummy.cpp
│ │ ├── func_common.hpp
│ │ ├── func_common.inl
│ │ ├── func_common_simd.inl
│ │ ├── func_exponential.hpp
│ │ ├── func_exponential.inl
│ │ ├── func_exponential_simd.inl
│ │ ├── func_geometric.hpp
│ │ ├── func_geometric.inl
│ │ ├── func_geometric_simd.inl
│ │ ├── func_integer.hpp
│ │ ├── func_integer.inl
│ │ ├── func_integer_simd.inl
│ │ ├── func_matrix.hpp
│ │ ├── func_matrix.inl
│ │ ├── func_matrix_simd.inl
│ │ ├── func_packing.hpp
│ │ ├── func_packing.inl
│ │ ├── func_packing_simd.inl
│ │ ├── func_trigonometric.hpp
│ │ ├── func_trigonometric.inl
│ │ ├── func_trigonometric_simd.inl
│ │ ├── func_vector_relational.hpp
│ │ ├── func_vector_relational.inl
│ │ ├── func_vector_relational_simd.inl
│ │ ├── glm.cpp
│ │ ├── precision.hpp
│ │ ├── setup.hpp
│ │ ├── type_float.hpp
│ │ ├── type_gentype.hpp
│ │ ├── type_gentype.inl
│ │ ├── type_half.hpp
│ │ ├── type_half.inl
│ │ ├── type_int.hpp
│ │ ├── type_mat.hpp
│ │ ├── type_mat.inl
│ │ ├── type_mat2x2.hpp
│ │ ├── type_mat2x2.inl
│ │ ├── type_mat2x3.hpp
│ │ ├── type_mat2x3.inl
│ │ ├── type_mat2x4.hpp
│ │ ├── type_mat2x4.inl
│ │ ├── type_mat3x2.hpp
│ │ ├── type_mat3x2.inl
│ │ ├── type_mat3x3.hpp
│ │ ├── type_mat3x3.inl
│ │ ├── type_mat3x4.hpp
│ │ ├── type_mat3x4.inl
│ │ ├── type_mat4x2.hpp
│ │ ├── type_mat4x2.inl
│ │ ├── type_mat4x3.hpp
│ │ ├── type_mat4x3.inl
│ │ ├── type_mat4x4.hpp
│ │ ├── type_mat4x4.inl
│ │ ├── type_mat4x4_simd.inl
│ │ ├── type_vec.hpp
│ │ ├── type_vec.inl
│ │ ├── type_vec1.hpp
│ │ ├── type_vec1.inl
│ │ ├── type_vec2.hpp
│ │ ├── type_vec2.inl
│ │ ├── type_vec3.hpp
│ │ ├── type_vec3.inl
│ │ ├── type_vec4.hpp
│ │ ├── type_vec4.inl
│ │ └── type_vec4_simd.inl
│ ├── exponential.hpp
│ ├── ext.hpp
│ ├── fwd.hpp
│ ├── geometric.hpp
│ ├── glm.hpp
│ ├── gtc
│ │ ├── bitfield.hpp
│ │ ├── bitfield.inl
│ │ ├── color_encoding.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── constants.hpp
│ │ ├── constants.inl
│ │ ├── epsilon.hpp
│ │ ├── epsilon.inl
│ │ ├── functions.hpp
│ │ ├── functions.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── matrix_access.hpp
│ │ ├── matrix_access.inl
│ │ ├── matrix_integer.hpp
│ │ ├── matrix_inverse.hpp
│ │ ├── matrix_inverse.inl
│ │ ├── matrix_transform.hpp
│ │ ├── matrix_transform.inl
│ │ ├── noise.hpp
│ │ ├── noise.inl
│ │ ├── packing.hpp
│ │ ├── packing.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── quaternion_simd.inl
│ │ ├── random.hpp
│ │ ├── random.inl
│ │ ├── reciprocal.hpp
│ │ ├── reciprocal.inl
│ │ ├── round.hpp
│ │ ├── round.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_precision.hpp
│ │ ├── type_precision.inl
│ │ ├── type_ptr.hpp
│ │ ├── type_ptr.inl
│ │ ├── ulp.hpp
│ │ ├── ulp.inl
│ │ ├── vec1.hpp
│ │ └── vec1.inl
│ ├── gtx
│ │ ├── associated_min_max.hpp
│ │ ├── associated_min_max.inl
│ │ ├── bit.hpp
│ │ ├── bit.inl
│ │ ├── closest_point.hpp
│ │ ├── closest_point.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── color_space_YCoCg.hpp
│ │ ├── color_space_YCoCg.inl
│ │ ├── common.hpp
│ │ ├── common.inl
│ │ ├── compatibility.hpp
│ │ ├── compatibility.inl
│ │ ├── component_wise.hpp
│ │ ├── component_wise.inl
│ │ ├── dual_quaternion.hpp
│ │ ├── dual_quaternion.inl
│ │ ├── euler_angles.hpp
│ │ ├── euler_angles.inl
│ │ ├── extend.hpp
│ │ ├── extend.inl
│ │ ├── extended_min_max.hpp
│ │ ├── extended_min_max.inl
│ │ ├── fast_exponential.hpp
│ │ ├── fast_exponential.inl
│ │ ├── fast_square_root.hpp
│ │ ├── fast_square_root.inl
│ │ ├── fast_trigonometry.hpp
│ │ ├── fast_trigonometry.inl
│ │ ├── float_notmalize.inl
│ │ ├── gradient_paint.hpp
│ │ ├── gradient_paint.inl
│ │ ├── handed_coordinate_space.hpp
│ │ ├── handed_coordinate_space.inl
│ │ ├── hash.hpp
│ │ ├── hash.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── intersect.hpp
│ │ ├── intersect.inl
│ │ ├── io.hpp
│ │ ├── io.inl
│ │ ├── log_base.hpp
│ │ ├── log_base.inl
│ │ ├── matrix_cross_product.hpp
│ │ ├── matrix_cross_product.inl
│ │ ├── matrix_decompose.hpp
│ │ ├── matrix_decompose.inl
│ │ ├── matrix_interpolation.hpp
│ │ ├── matrix_interpolation.inl
│ │ ├── matrix_major_storage.hpp
│ │ ├── matrix_major_storage.inl
│ │ ├── matrix_operation.hpp
│ │ ├── matrix_operation.inl
│ │ ├── matrix_query.hpp
│ │ ├── matrix_query.inl
│ │ ├── matrix_transform_2d.hpp
│ │ ├── matrix_transform_2d.inl
│ │ ├── mixed_product.hpp
│ │ ├── mixed_product.inl
│ │ ├── norm.hpp
│ │ ├── norm.inl
│ │ ├── normal.hpp
│ │ ├── normal.inl
│ │ ├── normalize_dot.hpp
│ │ ├── normalize_dot.inl
│ │ ├── number_precision.hpp
│ │ ├── number_precision.inl
│ │ ├── optimum_pow.hpp
│ │ ├── optimum_pow.inl
│ │ ├── orthonormalize.hpp
│ │ ├── orthonormalize.inl
│ │ ├── perpendicular.hpp
│ │ ├── perpendicular.inl
│ │ ├── polar_coordinates.hpp
│ │ ├── polar_coordinates.inl
│ │ ├── projection.hpp
│ │ ├── projection.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── range.hpp
│ │ ├── raw_data.hpp
│ │ ├── raw_data.inl
│ │ ├── rotate_normalized_axis.hpp
│ │ ├── rotate_normalized_axis.inl
│ │ ├── rotate_vector.hpp
│ │ ├── rotate_vector.inl
│ │ ├── scalar_multiplication.hpp
│ │ ├── scalar_relational.hpp
│ │ ├── scalar_relational.inl
│ │ ├── simd_mat4.hpp
│ │ ├── simd_mat4.inl
│ │ ├── simd_quat.hpp
│ │ ├── simd_quat.inl
│ │ ├── simd_vec4.hpp
│ │ ├── simd_vec4.inl
│ │ ├── spline.hpp
│ │ ├── spline.inl
│ │ ├── std_based_type.hpp
│ │ ├── std_based_type.inl
│ │ ├── string_cast.hpp
│ │ ├── string_cast.inl
│ │ ├── transform.hpp
│ │ ├── transform.inl
│ │ ├── transform2.hpp
│ │ ├── transform2.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_aligned.inl
│ │ ├── type_trait.hpp
│ │ ├── type_trait.inl
│ │ ├── vector_angle.hpp
│ │ ├── vector_angle.inl
│ │ ├── vector_query.hpp
│ │ ├── vector_query.inl
│ │ ├── wrap.hpp
│ │ └── wrap.inl
│ ├── integer.hpp
│ ├── mat2x2.hpp
│ ├── mat2x3.hpp
│ ├── mat2x4.hpp
│ ├── mat3x2.hpp
│ ├── mat3x3.hpp
│ ├── mat3x4.hpp
│ ├── mat4x2.hpp
│ ├── mat4x3.hpp
│ ├── mat4x4.hpp
│ ├── matrix.hpp
│ ├── packing.hpp
│ ├── simd
│ │ ├── common.h
│ │ ├── exponential.h
│ │ ├── geometric.h
│ │ ├── integer.h
│ │ ├── matrix.h
│ │ ├── packing.h
│ │ ├── platform.h
│ │ ├── trigonometric.h
│ │ └── vector_relational.h
│ ├── trigonometric.hpp
│ ├── vec2.hpp
│ ├── vec3.hpp
│ ├── vec4.hpp
│ └── vector_relational.hpp
├── readme.md
├── test
│ ├── .DS_Store
│ ├── CMakeLists.txt
│ ├── bug
│ │ ├── CMakeLists.txt
│ │ └── bug_ms_vec_static.cpp
│ ├── core
│ │ ├── CMakeLists.txt
│ │ ├── core_force_pure.cpp
│ │ ├── core_force_unrestricted_gentype.cpp
│ │ ├── core_func_common.cpp
│ │ ├── core_func_exponential.cpp
│ │ ├── core_func_geometric.cpp
│ │ ├── core_func_integer.cpp
│ │ ├── core_func_integer_bit_count.cpp
│ │ ├── core_func_integer_find_lsb.cpp
│ │ ├── core_func_integer_find_msb.cpp
│ │ ├── core_func_matrix.cpp
│ │ ├── core_func_noise.cpp
│ │ ├── core_func_packing.cpp
│ │ ├── core_func_swizzle.cpp
│ │ ├── core_func_trigonometric.cpp
│ │ ├── core_func_vector_relational.cpp
│ │ ├── core_setup_force_cxx98.cpp
│ │ ├── core_setup_message.cpp
│ │ ├── core_setup_precision.cpp
│ │ ├── core_type_aligned.cpp
│ │ ├── core_type_cast.cpp
│ │ ├── core_type_ctor.cpp
│ │ ├── core_type_float.cpp
│ │ ├── core_type_int.cpp
│ │ ├── core_type_length.cpp
│ │ ├── core_type_mat2x2.cpp
│ │ ├── core_type_mat2x3.cpp
│ │ ├── core_type_mat2x4.cpp
│ │ ├── core_type_mat3x2.cpp
│ │ ├── core_type_mat3x3.cpp
│ │ ├── core_type_mat3x4.cpp
│ │ ├── core_type_mat4x2.cpp
│ │ ├── core_type_mat4x3.cpp
│ │ ├── core_type_mat4x4.cpp
│ │ ├── core_type_vec1.cpp
│ │ ├── core_type_vec2.cpp
│ │ ├── core_type_vec3.cpp
│ │ └── core_type_vec4.cpp
│ ├── external
│ │ ├── .DS_Store
│ │ └── gli
│ │ │ ├── CMakeLists.txt
│ │ │ ├── core
│ │ │ ├── dummy.cpp
│ │ │ ├── generate_mipmaps.hpp
│ │ │ ├── generate_mipmaps.inl
│ │ │ ├── image2d.hpp
│ │ │ ├── image2d.inl
│ │ │ ├── operation.hpp
│ │ │ ├── operation.inl
│ │ │ ├── operator.hpp
│ │ │ ├── operator.inl
│ │ │ ├── shared_array.hpp
│ │ │ ├── shared_array.inl
│ │ │ ├── shared_ptr.hpp
│ │ │ ├── shared_ptr.inl
│ │ │ ├── size.hpp
│ │ │ ├── size.inl
│ │ │ ├── texture2d.hpp
│ │ │ ├── texture2d.inl
│ │ │ ├── texture2d_array.hpp
│ │ │ ├── texture2d_array.inl
│ │ │ ├── texture_cube.hpp
│ │ │ ├── texture_cube.inl
│ │ │ ├── texture_cube_array.hpp
│ │ │ └── texture_cube_array.inl
│ │ │ ├── gli.hpp
│ │ │ └── gtx
│ │ │ ├── compression.hpp
│ │ │ ├── compression.inl
│ │ │ ├── fetch.hpp
│ │ │ ├── fetch.inl
│ │ │ ├── gl_texture2d.hpp
│ │ │ ├── gl_texture2d.inl
│ │ │ ├── gradient.hpp
│ │ │ ├── gradient.inl
│ │ │ ├── loader.hpp
│ │ │ ├── loader.inl
│ │ │ ├── loader_dds10.hpp
│ │ │ ├── loader_dds10.inl
│ │ │ ├── loader_dds9.hpp
│ │ │ ├── loader_dds9.inl
│ │ │ ├── loader_tga.hpp
│ │ │ ├── loader_tga.inl
│ │ │ ├── wavelet.hpp
│ │ │ └── wavelet.inl
│ ├── glm.cppcheck
│ ├── gtc
│ │ ├── CMakeLists.txt
│ │ ├── gtc_bitfield.cpp
│ │ ├── gtc_color_space.cpp
│ │ ├── gtc_constants.cpp
│ │ ├── gtc_epsilon.cpp
│ │ ├── gtc_functions.cpp
│ │ ├── gtc_integer.cpp
│ │ ├── gtc_matrix_access.cpp
│ │ ├── gtc_matrix_integer.cpp
│ │ ├── gtc_matrix_inverse.cpp
│ │ ├── gtc_matrix_transform.cpp
│ │ ├── gtc_noise.cpp
│ │ ├── gtc_packing.cpp
│ │ ├── gtc_quaternion.cpp
│ │ ├── gtc_random.cpp
│ │ ├── gtc_reciprocal.cpp
│ │ ├── gtc_round.cpp
│ │ ├── gtc_type_aligned.cpp
│ │ ├── gtc_type_precision.cpp
│ │ ├── gtc_type_ptr.cpp
│ │ ├── gtc_ulp.cpp
│ │ ├── gtc_user_defined_types.cpp
│ │ └── gtc_vec1.cpp
│ └── gtx
│ │ ├── CMakeLists.txt
│ │ ├── gtx_associated_min_max.cpp
│ │ ├── gtx_closest_point.cpp
│ │ ├── gtx_color_space.cpp
│ │ ├── gtx_color_space_YCoCg.cpp
│ │ ├── gtx_common.cpp
│ │ ├── gtx_compatibility.cpp
│ │ ├── gtx_component_wise.cpp
│ │ ├── gtx_dual_quaternion.cpp
│ │ ├── gtx_euler_angle.cpp
│ │ ├── gtx_extend.cpp
│ │ ├── gtx_extended_min_max.cpp
│ │ ├── gtx_extented_min_max.cpp
│ │ ├── gtx_fast_exponential.cpp
│ │ ├── gtx_fast_square_root.cpp
│ │ ├── gtx_fast_trigonometry.cpp
│ │ ├── gtx_gradient_paint.cpp
│ │ ├── gtx_handed_coordinate_space.cpp
│ │ ├── gtx_int_10_10_10_2.cpp
│ │ ├── gtx_integer.cpp
│ │ ├── gtx_intersect.cpp
│ │ ├── gtx_io.cpp
│ │ ├── gtx_log_base.cpp
│ │ ├── gtx_matrix_cross_product.cpp
│ │ ├── gtx_matrix_decompose.cpp
│ │ ├── gtx_matrix_interpolation.cpp
│ │ ├── gtx_matrix_major_storage.cpp
│ │ ├── gtx_matrix_operation.cpp
│ │ ├── gtx_matrix_query.cpp
│ │ ├── gtx_matrix_transform_2d.cpp
│ │ ├── gtx_mixed_product.cpp
│ │ ├── gtx_norm.cpp
│ │ ├── gtx_normal.cpp
│ │ ├── gtx_normalize_dot.cpp
│ │ ├── gtx_number_precision.cpp
│ │ ├── gtx_optimum_pow.cpp
│ │ ├── gtx_orthonormalize.cpp
│ │ ├── gtx_perpendicular.cpp
│ │ ├── gtx_polar_coordinates.cpp
│ │ ├── gtx_projection.cpp
│ │ ├── gtx_quaternion.cpp
│ │ ├── gtx_random.cpp
│ │ ├── gtx_range.cpp
│ │ ├── gtx_rotate_normalized_axis.cpp
│ │ ├── gtx_rotate_vector.cpp
│ │ ├── gtx_scalar_multiplication.cpp
│ │ ├── gtx_scalar_relational.cpp
│ │ ├── gtx_simd_mat4.cpp
│ │ ├── gtx_simd_vec4.cpp
│ │ ├── gtx_spline.cpp
│ │ ├── gtx_string_cast.cpp
│ │ ├── gtx_type_aligned.cpp
│ │ ├── gtx_type_trait.cpp
│ │ ├── gtx_vector_angle.cpp
│ │ ├── gtx_vector_query.cpp
│ │ └── gtx_wrap.cpp
└── util
│ ├── autoexp.txt
│ ├── autoexp.vc2010.dat
│ ├── glm.natvis
│ └── usertype.dat
└── xcode源码
├── .DS_Store
├── LearnOpenGLWorkSpace.xcworkspace
├── contents.xcworkspacedata
├── xcshareddata
│ └── LearnOpenGLWorkSpace.xcscmblueprint
└── xcuserdata
│ └── tomxiang.xcuserdatad
│ ├── UserInterfaceState.xcuserstate
│ └── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
├── LearnOpenGLXcodeWorkSpace
├── .DS_Store
├── 1.1hellowindow
│ ├── 1.1hellowindow.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.1hellowindow.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.1hellowindow
│ │ └── main.cpp
├── 1.2home01
│ ├── 1.2home01.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.2home01.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.2home01
│ │ └── main.cpp
├── 1.2home02
│ ├── 1.2home02.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.2home02.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.2home02
│ │ └── main.cpp
├── 1.2home03
│ ├── .DS_Store
│ ├── 1.2home03.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3home03.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.2home03
│ │ └── main.cpp
├── 1.2rect
│ ├── 1.2rect.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.2rect.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.2rect
│ │ └── main.cpp
├── 1.2traiangle
│ ├── 1.2traiangle.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.2traiangle.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.2traiangle
│ │ └── main.cpp
├── 1.3shaders
│ ├── 1.3shaders.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3shaders.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.3shaders
│ │ └── main.cpp
├── 1.3shadershome01
│ ├── .DS_Store
│ ├── 1.3shadershome01.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3shadershome01.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.3shadershome01
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.3shadershome03
│ ├── .DS_Store
│ ├── 1.3shadershome03.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3shadershome03.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.3shadershome03
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.3shadersmanager
│ ├── .DS_Store
│ ├── 1.3shadersmanager.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3shadersmanager.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.3shadersmanager
│ │ ├── .DS_Store
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.3shadersmulticolor
│ ├── 1.3shadersmulticolor.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.3shadersmulticolor.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.3shadersmulticolor
│ │ └── main.cpp
├── 1.4home01
│ ├── .DS_Store
│ ├── 1.4home01.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.4home01.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.4home01
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.4home02
│ ├── .DS_Store
│ ├── 1.4home02.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.4home02.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.4home02
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.4home03
│ ├── .DS_Store
│ ├── 1.4home03.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.4home03.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.4home03
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.4textures
│ ├── .DS_Store
│ ├── 1.4textures.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.4textures.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.4textures
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
├── 1.4texturesmulti
│ ├── .DS_Store
│ ├── 1.4texturesmulti.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── tomxiang.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── 1.4texturesmulti.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── 1.4texturesmulti
│ │ ├── basic.frag
│ │ ├── basic.vs
│ │ ├── main.cpp
│ │ └── shader.h
└── 1.5transformations
│ ├── .DS_Store
│ ├── 1.5transformations.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── tomxiang.xcuserdatad
│ │ └── xcschemes
│ │ ├── 1.5transformations.xcscheme
│ │ └── xcschememanagement.plist
│ └── 1.5transformations
│ ├── .DS_Store
│ ├── basic.frag
│ ├── basic.vs
│ ├── glm
│ ├── .DS_Store
│ ├── CMakeLists.txt
│ ├── common.hpp
│ ├── detail
│ │ ├── _features.hpp
│ │ ├── _fixes.hpp
│ │ ├── _noise.hpp
│ │ ├── _swizzle.hpp
│ │ ├── _swizzle_func.hpp
│ │ ├── _vectorize.hpp
│ │ ├── dummy.cpp
│ │ ├── func_common.hpp
│ │ ├── func_common.inl
│ │ ├── func_common_simd.inl
│ │ ├── func_exponential.hpp
│ │ ├── func_exponential.inl
│ │ ├── func_exponential_simd.inl
│ │ ├── func_geometric.hpp
│ │ ├── func_geometric.inl
│ │ ├── func_geometric_simd.inl
│ │ ├── func_integer.hpp
│ │ ├── func_integer.inl
│ │ ├── func_integer_simd.inl
│ │ ├── func_matrix.hpp
│ │ ├── func_matrix.inl
│ │ ├── func_matrix_simd.inl
│ │ ├── func_packing.hpp
│ │ ├── func_packing.inl
│ │ ├── func_packing_simd.inl
│ │ ├── func_trigonometric.hpp
│ │ ├── func_trigonometric.inl
│ │ ├── func_trigonometric_simd.inl
│ │ ├── func_vector_relational.hpp
│ │ ├── func_vector_relational.inl
│ │ ├── func_vector_relational_simd.inl
│ │ ├── glm.cpp
│ │ ├── precision.hpp
│ │ ├── setup.hpp
│ │ ├── type_float.hpp
│ │ ├── type_gentype.hpp
│ │ ├── type_gentype.inl
│ │ ├── type_half.hpp
│ │ ├── type_half.inl
│ │ ├── type_int.hpp
│ │ ├── type_mat.hpp
│ │ ├── type_mat.inl
│ │ ├── type_mat2x2.hpp
│ │ ├── type_mat2x2.inl
│ │ ├── type_mat2x3.hpp
│ │ ├── type_mat2x3.inl
│ │ ├── type_mat2x4.hpp
│ │ ├── type_mat2x4.inl
│ │ ├── type_mat3x2.hpp
│ │ ├── type_mat3x2.inl
│ │ ├── type_mat3x3.hpp
│ │ ├── type_mat3x3.inl
│ │ ├── type_mat3x4.hpp
│ │ ├── type_mat3x4.inl
│ │ ├── type_mat4x2.hpp
│ │ ├── type_mat4x2.inl
│ │ ├── type_mat4x3.hpp
│ │ ├── type_mat4x3.inl
│ │ ├── type_mat4x4.hpp
│ │ ├── type_mat4x4.inl
│ │ ├── type_mat4x4_simd.inl
│ │ ├── type_vec.hpp
│ │ ├── type_vec.inl
│ │ ├── type_vec1.hpp
│ │ ├── type_vec1.inl
│ │ ├── type_vec2.hpp
│ │ ├── type_vec2.inl
│ │ ├── type_vec3.hpp
│ │ ├── type_vec3.inl
│ │ ├── type_vec4.hpp
│ │ ├── type_vec4.inl
│ │ └── type_vec4_simd.inl
│ ├── exponential.hpp
│ ├── ext.hpp
│ ├── fwd.hpp
│ ├── geometric.hpp
│ ├── glm.hpp
│ ├── gtc
│ │ ├── bitfield.hpp
│ │ ├── bitfield.inl
│ │ ├── color_encoding.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── constants.hpp
│ │ ├── constants.inl
│ │ ├── epsilon.hpp
│ │ ├── epsilon.inl
│ │ ├── functions.hpp
│ │ ├── functions.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── matrix_access.hpp
│ │ ├── matrix_access.inl
│ │ ├── matrix_integer.hpp
│ │ ├── matrix_inverse.hpp
│ │ ├── matrix_inverse.inl
│ │ ├── matrix_transform.hpp
│ │ ├── matrix_transform.inl
│ │ ├── noise.hpp
│ │ ├── noise.inl
│ │ ├── packing.hpp
│ │ ├── packing.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── quaternion_simd.inl
│ │ ├── random.hpp
│ │ ├── random.inl
│ │ ├── reciprocal.hpp
│ │ ├── reciprocal.inl
│ │ ├── round.hpp
│ │ ├── round.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_precision.hpp
│ │ ├── type_precision.inl
│ │ ├── type_ptr.hpp
│ │ ├── type_ptr.inl
│ │ ├── ulp.hpp
│ │ ├── ulp.inl
│ │ ├── vec1.hpp
│ │ └── vec1.inl
│ ├── gtx
│ │ ├── associated_min_max.hpp
│ │ ├── associated_min_max.inl
│ │ ├── bit.hpp
│ │ ├── bit.inl
│ │ ├── closest_point.hpp
│ │ ├── closest_point.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── color_space_YCoCg.hpp
│ │ ├── color_space_YCoCg.inl
│ │ ├── common.hpp
│ │ ├── common.inl
│ │ ├── compatibility.hpp
│ │ ├── compatibility.inl
│ │ ├── component_wise.hpp
│ │ ├── component_wise.inl
│ │ ├── dual_quaternion.hpp
│ │ ├── dual_quaternion.inl
│ │ ├── euler_angles.hpp
│ │ ├── euler_angles.inl
│ │ ├── extend.hpp
│ │ ├── extend.inl
│ │ ├── extended_min_max.hpp
│ │ ├── extended_min_max.inl
│ │ ├── fast_exponential.hpp
│ │ ├── fast_exponential.inl
│ │ ├── fast_square_root.hpp
│ │ ├── fast_square_root.inl
│ │ ├── fast_trigonometry.hpp
│ │ ├── fast_trigonometry.inl
│ │ ├── float_notmalize.inl
│ │ ├── gradient_paint.hpp
│ │ ├── gradient_paint.inl
│ │ ├── handed_coordinate_space.hpp
│ │ ├── handed_coordinate_space.inl
│ │ ├── hash.hpp
│ │ ├── hash.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── intersect.hpp
│ │ ├── intersect.inl
│ │ ├── io.hpp
│ │ ├── io.inl
│ │ ├── log_base.hpp
│ │ ├── log_base.inl
│ │ ├── matrix_cross_product.hpp
│ │ ├── matrix_cross_product.inl
│ │ ├── matrix_decompose.hpp
│ │ ├── matrix_decompose.inl
│ │ ├── matrix_interpolation.hpp
│ │ ├── matrix_interpolation.inl
│ │ ├── matrix_major_storage.hpp
│ │ ├── matrix_major_storage.inl
│ │ ├── matrix_operation.hpp
│ │ ├── matrix_operation.inl
│ │ ├── matrix_query.hpp
│ │ ├── matrix_query.inl
│ │ ├── matrix_transform_2d.hpp
│ │ ├── matrix_transform_2d.inl
│ │ ├── mixed_product.hpp
│ │ ├── mixed_product.inl
│ │ ├── norm.hpp
│ │ ├── norm.inl
│ │ ├── normal.hpp
│ │ ├── normal.inl
│ │ ├── normalize_dot.hpp
│ │ ├── normalize_dot.inl
│ │ ├── number_precision.hpp
│ │ ├── number_precision.inl
│ │ ├── optimum_pow.hpp
│ │ ├── optimum_pow.inl
│ │ ├── orthonormalize.hpp
│ │ ├── orthonormalize.inl
│ │ ├── perpendicular.hpp
│ │ ├── perpendicular.inl
│ │ ├── polar_coordinates.hpp
│ │ ├── polar_coordinates.inl
│ │ ├── projection.hpp
│ │ ├── projection.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── range.hpp
│ │ ├── raw_data.hpp
│ │ ├── raw_data.inl
│ │ ├── rotate_normalized_axis.hpp
│ │ ├── rotate_normalized_axis.inl
│ │ ├── rotate_vector.hpp
│ │ ├── rotate_vector.inl
│ │ ├── scalar_multiplication.hpp
│ │ ├── scalar_relational.hpp
│ │ ├── scalar_relational.inl
│ │ ├── simd_mat4.hpp
│ │ ├── simd_mat4.inl
│ │ ├── simd_quat.hpp
│ │ ├── simd_quat.inl
│ │ ├── simd_vec4.hpp
│ │ ├── simd_vec4.inl
│ │ ├── spline.hpp
│ │ ├── spline.inl
│ │ ├── std_based_type.hpp
│ │ ├── std_based_type.inl
│ │ ├── string_cast.hpp
│ │ ├── string_cast.inl
│ │ ├── transform.hpp
│ │ ├── transform.inl
│ │ ├── transform2.hpp
│ │ ├── transform2.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_aligned.inl
│ │ ├── type_trait.hpp
│ │ ├── type_trait.inl
│ │ ├── vector_angle.hpp
│ │ ├── vector_angle.inl
│ │ ├── vector_query.hpp
│ │ ├── vector_query.inl
│ │ ├── wrap.hpp
│ │ └── wrap.inl
│ ├── integer.hpp
│ ├── mat2x2.hpp
│ ├── mat2x3.hpp
│ ├── mat2x4.hpp
│ ├── mat3x2.hpp
│ ├── mat3x3.hpp
│ ├── mat3x4.hpp
│ ├── mat4x2.hpp
│ ├── mat4x3.hpp
│ ├── mat4x4.hpp
│ ├── matrix.hpp
│ ├── packing.hpp
│ ├── simd
│ │ ├── common.h
│ │ ├── exponential.h
│ │ ├── geometric.h
│ │ ├── integer.h
│ │ ├── matrix.h
│ │ ├── packing.h
│ │ ├── platform.h
│ │ ├── trigonometric.h
│ │ └── vector_relational.h
│ ├── trigonometric.hpp
│ ├── vec2.hpp
│ ├── vec3.hpp
│ ├── vec4.hpp
│ └── vector_relational.hpp
│ ├── main.cpp
│ └── shader.h
└── resources
├── .DS_Store
├── objects
├── .DS_Store
├── nanosuit
│ ├── arm_dif.png
│ ├── arm_showroom_ddn.png
│ ├── arm_showroom_refl.png
│ ├── arm_showroom_spec.png
│ ├── back.jpg
│ ├── body_dif.png
│ ├── body_showroom_ddn.png
│ ├── body_showroom_refl.png
│ ├── body_showroom_spec.png
│ ├── cell_arm_alpha.png
│ ├── cell_body_alpha.png
│ ├── cell_ddn.png
│ ├── cell_hand_alpha.png
│ ├── cell_helmet_alpha.png
│ ├── cell_leg_alpha.png
│ ├── front.jpg
│ ├── glass_ddn.png
│ ├── glass_dif.png
│ ├── glass_refl.png
│ ├── hand_dif.png
│ ├── hand_showroom_ddn.png
│ ├── hand_showroom_refl.png
│ ├── hand_showroom_spec.png
│ ├── helmet_diff.png
│ ├── helmet_showroom_ddn.png
│ ├── helmet_showroom_refl.png
│ ├── helmet_showroom_spec.png
│ ├── leg_dif.png
│ ├── leg_showroom_ddn.png
│ ├── leg_showroom_refl.png
│ ├── leg_showroom_spec.png
│ ├── nanosuit.mtl
│ └── nanosuit.obj
├── planet
│ ├── planet.mtl
│ ├── planet.obj
│ └── planet_Quom1200.png
└── rock
│ ├── Rock-Texture-Surface.jpg
│ ├── rock.mtl
│ └── rock.obj
└── textures
├── .DS_Store
├── awesomeface.png
├── container.jpg
├── container2.png
├── container2_specular.png
├── grass.png
├── marble.jpg
├── metal.png
├── skybox
├── back.jpg
├── bottom.jpg
├── front.jpg
├── left.jpg
├── right.jpg
└── top.jpg
├── window.png
└── wood.png
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/.DS_Store
--------------------------------------------------------------------------------
/Metal学习/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/.DS_Store
--------------------------------------------------------------------------------
/Metal学习/Images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/.DS_Store
--------------------------------------------------------------------------------
/Metal学习/Images/CAMetalLayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/CAMetalLayer.png
--------------------------------------------------------------------------------
/Metal学习/Images/CPU&GPU pipelining.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/CPU&GPU pipelining.png
--------------------------------------------------------------------------------
/Metal学习/Images/CPU&GPU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/CPU&GPU.png
--------------------------------------------------------------------------------
/Metal学习/Images/MetalDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/MetalDevice.png
--------------------------------------------------------------------------------
/Metal学习/Images/MetalTriangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/MetalTriangle.png
--------------------------------------------------------------------------------
/Metal学习/Images/OpenGL绘制三角形.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/OpenGL绘制三角形.png
--------------------------------------------------------------------------------
/Metal学习/Images/opengl&metal性能对比.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/opengl&metal性能对比.png
--------------------------------------------------------------------------------
/Metal学习/Images/三角形.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/Images/三角形.png
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/MetalTriangle/.DS_Store
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle.xcodeproj/project.xcworkspace/xcuserdata/tomxiang.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/MetalTriangle/MetalTriangle.xcodeproj/project.xcworkspace/xcuserdata/tomxiang.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle.xcodeproj/xcuserdata/tomxiang.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | MetalTriangle.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 9AFBC9E21EC49EB1005A15F5
16 |
17 | primary
18 |
19 |
20 | 9AFBC9FB1EC49EB1005A15F5
21 |
22 | primary
23 |
24 |
25 | 9AFBCA061EC49EB1005A15F5
26 |
27 | primary
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // MetalTriangle
4 | //
5 | // Created by tomxiang on 2017/5/11.
6 | // Copyright © 2017年 tomxiang. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "ipad",
35 | "size" : "29x29",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "ipad",
40 | "size" : "29x29",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "40x40",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "40x40",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "76x76",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "76x76",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle/Shaders.metal:
--------------------------------------------------------------------------------
1 | //
2 | // Shaders.metal
3 | // HelloMetal
4 | //
5 | // Created by Andriy K. on 11/12/16.
6 | // Copyright © 2016 razeware. All rights reserved.
7 | //
8 |
9 | // 一个vertex shader被每个顶点调用,它的工作是接受顶点的信息(如:位置和颜色、纹理坐标),返回一个潜在的修正位置(可能还有别的相关信息)
10 | #include
11 | using namespace metal;
12 | /**
13 | * 1、所有的vertex shaders必须以关键字vertex开头。函数必须至少返回顶点的最终位置——你通过指定float4(一个元素为4个浮点数的向量)。然后你给一个名字给vetex shader,以后你将用这个名字来访问这个vertex shader。
14 | * 2、vertex shader会接受一个名叫vertex_id的属性的特定参数,它意味着它会被vertex数组里特定的顶点所装入。
15 | * 3、一个指向一个元素为packed_float4(一个向量包含4个浮点数)的数组的指针,如:每个顶点的位置。这个 [[ ... ]] 语法被用在声明那些能被用作特定额外信息的属性,像是资源位置,shader输入,内建变量。这里你把这个参数用 [[ buffer(0) ]] 标记,来指明这个参数将会被在你代码中你发送到你的vertex shader的第一块buffer data所遍历。
16 | * 4、基于vertex id来检索vertex数组中对应位置的vertex并把它返回。向量必须为一个float4类型
17 | */
18 | vertex float4 basic_vertex( // 1
19 | const device packed_float3* vertex_array [[ buffer(0) ]], // 2
20 | unsigned int vid [[ vertex_id ]]) { // 3
21 | return float4(vertex_array[vid], 1.0); // 4
22 | }
23 |
24 | /*
25 | 1. 所有fragment shaders必须以fragment关键字开始。这个函数必须至少返回fragment的最终颜色——你通过指定half4(一个颜色的RGBA值)来完成这个任务。注意,half4比float4在内存上更有效率,因为,你写入了更少的GPU内存。
26 | 2. 这里你返回(0.6,0.6,0.6,0.6)的颜色,也就是灰色。
27 | */
28 | fragment half4 basic_fragment() {
29 | return half4(0, 1, 0, 1);
30 | }
31 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // MetalTriangle
4 | //
5 | // Created by tomxiang on 2017/5/11.
6 | // Copyright © 2017年 tomxiang. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangle/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MetalTriangle
4 | //
5 | // Created by tomxiang on 2017/5/11.
6 | // Copyright © 2017年 tomxiang. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangleTests/MetalTriangleTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // MetalTriangleTests.m
3 | // MetalTriangleTests
4 | //
5 | // Created by tomxiang on 2017/5/11.
6 | // Copyright © 2017年 tomxiang. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MetalTriangleTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation MetalTriangleTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangleUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Metal学习/MetalTriangle/MetalTriangleUITests/MetalTriangleUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // MetalTriangleUITests.m
3 | // MetalTriangleUITests
4 | //
5 | // Created by tomxiang on 2017/5/11.
6 | // Copyright © 2017年 tomxiang. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MetalTriangleUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation MetalTriangleUITests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 |
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 |
22 | // In UI tests it is usually best to stop immediately when a failure occurs.
23 | self.continueAfterFailure = NO;
24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
25 | [[[XCUIApplication alloc] init] launch];
26 |
27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
28 | }
29 |
30 | - (void)tearDown {
31 | // Put teardown code here. This method is called after the invocation of each test method in the class.
32 | [super tearDown];
33 | }
34 |
35 | - (void)testExample {
36 | // Use recording to get started writing UI tests.
37 | // Use XCTAssert and related functions to verify your tests produce the correct results.
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/Metal学习/PDF/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/PDF/.DS_Store
--------------------------------------------------------------------------------
/Metal学习/PDF/602_adopting_metal_part_1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/PDF/602_adopting_metal_part_1.pdf
--------------------------------------------------------------------------------
/Metal学习/PDF/604_working_with_metal_fundamentals.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Metal学习/PDF/604_working_with_metal_fundamentals.pdf
--------------------------------------------------------------------------------
/Note/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/.DS_Store
--------------------------------------------------------------------------------
/Note/1环境搭建/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/.DS_Store
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/1.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/2.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/3.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/4.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/5.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/6.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/7.png
--------------------------------------------------------------------------------
/Note/1环境搭建/Images/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/1环境搭建/Images/8.png
--------------------------------------------------------------------------------
/Note/2窗口绘制/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/2窗口绘制/.DS_Store
--------------------------------------------------------------------------------
/Note/2窗口绘制/1.hellowindow/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/2窗口绘制/1.hellowindow/.DS_Store
--------------------------------------------------------------------------------
/Note/2窗口绘制/1.hellowindow/testHelloworld.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Note/2窗口绘制/1.hellowindow/testHelloworld.xcodeproj/project.xcworkspace/xcuserdata/tomxiang.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/2窗口绘制/1.hellowindow/testHelloworld.xcodeproj/project.xcworkspace/xcuserdata/tomxiang.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Note/2窗口绘制/1.hellowindow/testHelloworld.xcodeproj/xcuserdata/tomxiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/Note/2窗口绘制/1.hellowindow/testHelloworld.xcodeproj/xcuserdata/tomxiang.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | testHelloworld.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 9AB9ACD01EB199C700F5D39C
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Note/2窗口绘制/Images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/2窗口绘制/Images/.DS_Store
--------------------------------------------------------------------------------
/Note/3.绘制三角形/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/3.绘制三角形/.DS_Store
--------------------------------------------------------------------------------
/Note/3.绘制三角形/Images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/3.绘制三角形/Images/.DS_Store
--------------------------------------------------------------------------------
/Note/3.绘制三角形/Images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/3.绘制三角形/Images/1.png
--------------------------------------------------------------------------------
/Note/3.绘制三角形/Images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/3.绘制三角形/Images/2.png
--------------------------------------------------------------------------------
/Note/3.绘制三角形/绘制流程图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/Note/3.绘制三角形/绘制流程图.png
--------------------------------------------------------------------------------
/PDF/OpenGL Insights.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/PDF/OpenGL Insights.pdf
--------------------------------------------------------------------------------
/PDF/learnopengl-cn.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/PDF/learnopengl-cn.pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LearnOpenGLNote
2 |
3 |
4 | [源码github](https://github.com/JoeyDeVries/LearnOpenGL)
--------------------------------------------------------------------------------
/glm/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/.DS_Store
--------------------------------------------------------------------------------
/glm/.appveyor.yml:
--------------------------------------------------------------------------------
1 | clone_folder: c:\dev\glm-cmake
2 |
3 | os:
4 | - Visual Studio 2013
5 |
6 | platform:
7 | - x86
8 | - x86_64
9 |
10 | build_script:
11 | - md build_pure_11
12 | - cd build_pure_11
13 | - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON ..
14 | - cmake --build . --config Debug
15 | - cmake --build . --config Release
16 | - cd ..
17 | - md build_simd_11
18 | - cd build_simd_11
19 | - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON ..
20 | - cmake --build . --config Debug
21 | - cmake --build . --config Release
22 | - cd ..
23 | - md build_pure_98
24 | - cd build_pure_98
25 | - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
26 | - cmake --build . --config Debug
27 | - cmake --build . --config Release
28 | - cd ..
29 | - md build_simd_98
30 | - cd build_simd_98
31 | - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON ..
32 | - cmake --build . --config Debug
33 | - cmake --build . --config Release
34 | - cd ..
35 |
--------------------------------------------------------------------------------
/glm/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files
2 | *.slo
3 | *.lo
4 | *.o
5 | *.obj
6 |
7 | # Precompiled Headers
8 | *.gch
9 | *.pch
10 |
11 | # Compiled Dynamic libraries
12 | *.so
13 | *.dylib
14 | *.dll
15 |
16 | # Fortran module files
17 | *.mod
18 |
19 | # Compiled Static libraries
20 | *.lai
21 | *.la
22 | *.a
23 | *.lib
24 |
25 | # Executables
26 | *.exe
27 | *.out
28 | *.app
29 |
30 | # CMake
31 | CMakeCache.txt
32 | CMakeFiles
33 | cmake_install.cmake
34 | install_manifest.txt
35 | *.cmake
36 | # ^ May need to add future .cmake files as exceptions
37 |
38 | # Test logs
39 | Testing/*
40 |
41 | # Test input
42 | test/gtc/*.dds
43 |
44 | # Project Files
45 | Makefile
46 | *.cbp
47 | *.user
48 |
49 | # Misc.
50 | *.log
51 |
52 | # local build(s)
53 | build*
54 |
55 |
--------------------------------------------------------------------------------
/glm/cmake/glm.pc.in:
--------------------------------------------------------------------------------
1 | prefix=@CMAKE_INSTALL_PREFIX@
2 | includedir=${prefix}/include
3 |
4 | Name: GLM
5 | Description: OpenGL Mathematics
6 | Version: @GLM_VERSION@
7 | Cflags: -I${includedir}
8 |
--------------------------------------------------------------------------------
/glm/cmake/glmBuildConfig.cmake.in:
--------------------------------------------------------------------------------
1 | set(GLM_VERSION "@GLM_VERSION@")
2 | set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@")
3 |
4 | if (NOT CMAKE_VERSION VERSION_LESS "3.0")
5 | include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
6 | endif()
7 |
--------------------------------------------------------------------------------
/glm/cmake/glmConfig.cmake.in:
--------------------------------------------------------------------------------
1 | set(GLM_VERSION "@GLM_VERSION@")
2 |
3 | @PACKAGE_INIT@
4 |
5 | set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
6 |
7 | if (NOT CMAKE_VERSION VERSION_LESS "3.0")
8 | include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
9 | endif()
10 |
--------------------------------------------------------------------------------
/glm/doc/api/arrowdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/arrowdown.png
--------------------------------------------------------------------------------
/glm/doc/api/arrowright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/arrowright.png
--------------------------------------------------------------------------------
/glm/doc/api/bc_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/bc_s.png
--------------------------------------------------------------------------------
/glm/doc/api/bdwn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/bdwn.png
--------------------------------------------------------------------------------
/glm/doc/api/closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/closed.png
--------------------------------------------------------------------------------
/glm/doc/api/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/doc.png
--------------------------------------------------------------------------------
/glm/doc/api/doxygen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/doxygen.png
--------------------------------------------------------------------------------
/glm/doc/api/folderclosed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/folderclosed.png
--------------------------------------------------------------------------------
/glm/doc/api/folderopen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/folderopen.png
--------------------------------------------------------------------------------
/glm/doc/api/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/logo.png
--------------------------------------------------------------------------------
/glm/doc/api/nav_f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/nav_f.png
--------------------------------------------------------------------------------
/glm/doc/api/nav_g.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/nav_g.png
--------------------------------------------------------------------------------
/glm/doc/api/nav_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/nav_h.png
--------------------------------------------------------------------------------
/glm/doc/api/open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/open.png
--------------------------------------------------------------------------------
/glm/doc/api/splitbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/splitbar.png
--------------------------------------------------------------------------------
/glm/doc/api/sync_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/sync_off.png
--------------------------------------------------------------------------------
/glm/doc/api/sync_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/sync_on.png
--------------------------------------------------------------------------------
/glm/doc/api/tab_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/tab_a.png
--------------------------------------------------------------------------------
/glm/doc/api/tab_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/tab_b.png
--------------------------------------------------------------------------------
/glm/doc/api/tab_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/tab_h.png
--------------------------------------------------------------------------------
/glm/doc/api/tab_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/api/tab_s.png
--------------------------------------------------------------------------------
/glm/doc/glm.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/glm.docx
--------------------------------------------------------------------------------
/glm/doc/glm.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/glm.pdf
--------------------------------------------------------------------------------
/glm/doc/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/doc/logo.png
--------------------------------------------------------------------------------
/glm/glm/common.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/common.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_common.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/detail/_fixes.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/_fixes.hpp
3 |
4 | #include
5 |
6 | //! Workaround for compatibility with other libraries
7 | #ifdef max
8 | #undef max
9 | #endif
10 |
11 | //! Workaround for compatibility with other libraries
12 | #ifdef min
13 | #undef min
14 | #endif
15 |
16 | //! Workaround for Android
17 | #ifdef isnan
18 | #undef isnan
19 | #endif
20 |
21 | //! Workaround for Android
22 | #ifdef isinf
23 | #undef isinf
24 | #endif
25 |
26 | //! Workaround for Chrone Native Client
27 | #ifdef log2
28 | #undef log2
29 | #endif
30 |
31 |
--------------------------------------------------------------------------------
/glm/glm/detail/func_exponential_simd.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/func_exponential_simd.inl
3 |
4 | #include "../simd/exponential.h"
5 |
6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT
7 |
8 | namespace glm{
9 | namespace detail
10 | {
11 | template
12 | struct compute_sqrt
13 | {
14 | GLM_FUNC_QUALIFIER static tvec4 call(tvec4 const & v)
15 | {
16 | tvec4 result(uninitialize);
17 | result.data = _mm_sqrt_ps(v.data);
18 | return result;
19 | }
20 | };
21 |
22 | template <>
23 | struct compute_sqrt
24 | {
25 | GLM_FUNC_QUALIFIER static tvec4 call(tvec4 const & v)
26 | {
27 | tvec4 result(uninitialize);
28 | result.data = glm_vec4_sqrt_lowp(v.data);
29 | return result;
30 | }
31 | };
32 | }//namespace detail
33 | }//namespace glm
34 |
35 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT
36 |
--------------------------------------------------------------------------------
/glm/glm/detail/func_packing_simd.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/func_packing_simd.inl
3 |
4 | namespace glm{
5 | namespace detail
6 | {
7 |
8 | }//namespace detail
9 | }//namespace glm
10 |
--------------------------------------------------------------------------------
/glm/glm/detail/func_trigonometric_simd.inl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/glm/detail/func_trigonometric_simd.inl
--------------------------------------------------------------------------------
/glm/glm/detail/func_vector_relational_simd.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/func_vector_relational_simd.inl
3 |
4 | namespace glm{
5 | namespace detail
6 | {
7 |
8 | }//namespace detail
9 | }//namespace glm
10 |
--------------------------------------------------------------------------------
/glm/glm/detail/precision.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/precision.hpp
3 |
4 | #pragma once
5 |
6 | #include "setup.hpp"
7 |
8 | namespace glm
9 | {
10 | enum precision
11 | {
12 | packed_highp,
13 | packed_mediump,
14 | packed_lowp,
15 |
16 | # if GLM_HAS_ALIGNED_TYPE
17 | aligned_highp,
18 | aligned_mediump,
19 | aligned_lowp,
20 | aligned = aligned_highp,
21 | # endif
22 |
23 | highp = packed_highp,
24 | mediump = packed_mediump,
25 | lowp = packed_lowp,
26 | packed = packed_highp,
27 |
28 | # if GLM_HAS_ALIGNED_TYPE && defined(GLM_FORCE_ALIGNED)
29 | defaultp = aligned_highp
30 | # else
31 | defaultp = highp
32 | # endif
33 | };
34 |
35 | namespace detail
36 | {
37 | template
38 | struct is_aligned
39 | {
40 | static const bool value = false;
41 | };
42 |
43 | # if GLM_HAS_ALIGNED_TYPE
44 | template<>
45 | struct is_aligned
46 | {
47 | static const bool value = true;
48 | };
49 |
50 | template<>
51 | struct is_aligned
52 | {
53 | static const bool value = true;
54 | };
55 |
56 | template<>
57 | struct is_aligned
58 | {
59 | static const bool value = true;
60 | };
61 | # endif
62 | }//namespace detail
63 | }//namespace glm
64 |
--------------------------------------------------------------------------------
/glm/glm/detail/type_half.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/type_half.hpp
3 |
4 | #pragma once
5 |
6 | #include "setup.hpp"
7 |
8 | namespace glm{
9 | namespace detail
10 | {
11 | typedef short hdata;
12 |
13 | GLM_FUNC_DECL float toFloat32(hdata value);
14 | GLM_FUNC_DECL hdata toFloat16(float const & value);
15 |
16 | }//namespace detail
17 | }//namespace glm
18 |
19 | #include "type_half.inl"
20 |
--------------------------------------------------------------------------------
/glm/glm/detail/type_mat.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/type_mat.inl
3 |
4 |
--------------------------------------------------------------------------------
/glm/glm/detail/type_mat4x4_simd.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/type_mat4x4_sse2.inl
3 |
4 | namespace glm
5 | {
6 |
7 | }//namespace glm
8 |
--------------------------------------------------------------------------------
/glm/glm/detail/type_vec.inl:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/detail/type_vec.inl
3 |
--------------------------------------------------------------------------------
/glm/glm/exponential.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/exponential.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_exponential.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/geometric.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/geometric.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_geometric.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/gtc/functions.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtc_functions
2 | /// @file glm/gtc/functions.hpp
3 | ///
4 | /// @see core (dependence)
5 | /// @see gtc_half_float (dependence)
6 | /// @see gtc_quaternion (dependence)
7 | ///
8 | /// @defgroup gtc_functions GLM_GTC_functions
9 | /// @ingroup gtc
10 | ///
11 | /// @brief List of useful common functions.
12 | ///
13 | /// need to be included to use these functionalities.
14 |
15 | #pragma once
16 |
17 | // Dependencies
18 | #include "../detail/setup.hpp"
19 | #include "../detail/precision.hpp"
20 | #include "../detail/type_vec2.hpp"
21 |
22 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
23 | # pragma message("GLM: GLM_GTC_functions extension included")
24 | #endif
25 |
26 | namespace glm
27 | {
28 | /// @addtogroup gtc_functions
29 | /// @{
30 |
31 | /// 1D gauss function
32 | ///
33 | /// @see gtc_epsilon
34 | template
35 | GLM_FUNC_DECL T gauss(
36 | T x,
37 | T ExpectedValue,
38 | T StandardDeviation);
39 |
40 | /// 2D gauss function
41 | ///
42 | /// @see gtc_epsilon
43 | template
44 | GLM_FUNC_DECL T gauss(
45 | tvec2 const& Coord,
46 | tvec2 const& ExpectedValue,
47 | tvec2 const& StandardDeviation);
48 |
49 | /// @}
50 | }//namespace glm
51 |
52 | #include "functions.inl"
53 |
54 |
--------------------------------------------------------------------------------
/glm/glm/gtc/functions.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtc_functions
2 | /// @file glm/gtc/functions.inl
3 |
4 | #include "../detail/func_exponential.hpp"
5 |
6 | namespace glm
7 | {
8 | template
9 | GLM_FUNC_QUALIFIER T gauss
10 | (
11 | T x,
12 | T ExpectedValue,
13 | T StandardDeviation
14 | )
15 | {
16 | return exp(-((x - ExpectedValue) * (x - ExpectedValue)) / (static_cast(2) * StandardDeviation * StandardDeviation)) / (StandardDeviation * sqrt(static_cast(6.28318530717958647692528676655900576)));
17 | }
18 |
19 | template
20 | GLM_FUNC_QUALIFIER T gauss
21 | (
22 | tvec2 const& Coord,
23 | tvec2 const& ExpectedValue,
24 | tvec2 const& StandardDeviation
25 | )
26 | {
27 | tvec2 const Squared = ((Coord - ExpectedValue) * (Coord - ExpectedValue)) / (static_cast(2) * StandardDeviation * StandardDeviation);
28 | return exp(-(Squared.x + Squared.y));
29 | }
30 | }//namespace glm
31 |
32 |
--------------------------------------------------------------------------------
/glm/glm/gtc/type_precision.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtc_swizzle
2 | /// @file glm/gtc/swizzle.inl
3 |
4 | namespace glm
5 | {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/glm/glm/gtc/vec1.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtc_vec1
2 | /// @file glm/gtc/vec1.inl
3 |
--------------------------------------------------------------------------------
/glm/glm/gtx/closest_point.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_closest_point
2 | /// @file glm/gtx/closest_point.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_closest_point GLM_GTX_closest_point
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Find the point on a straight line which is the closet of a point.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_closest_point extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_closest_point
25 | /// @{
26 |
27 | /// Find the point on a straight line which is the closet of a point.
28 | /// @see gtx_closest_point
29 | template
30 | GLM_FUNC_DECL tvec3 closestPointOnLine(
31 | tvec3 const & point,
32 | tvec3 const & a,
33 | tvec3 const & b);
34 |
35 | /// 2d lines work as well
36 | template
37 | GLM_FUNC_DECL tvec2 closestPointOnLine(
38 | tvec2 const & point,
39 | tvec2 const & a,
40 | tvec2 const & b);
41 |
42 | /// @}
43 | }// namespace glm
44 |
45 | #include "closest_point.inl"
46 |
--------------------------------------------------------------------------------
/glm/glm/gtx/closest_point.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_closest_point
2 | /// @file glm/gtx/closest_point.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tvec3 closestPointOnLine
8 | (
9 | tvec3 const & point,
10 | tvec3 const & a,
11 | tvec3 const & b
12 | )
13 | {
14 | T LineLength = distance(a, b);
15 | tvec3 Vector = point - a;
16 | tvec3 LineDirection = (b - a) / LineLength;
17 |
18 | // Project Vector to LineDirection to get the distance of point from a
19 | T Distance = dot(Vector, LineDirection);
20 |
21 | if(Distance <= T(0)) return a;
22 | if(Distance >= LineLength) return b;
23 | return a + LineDirection * Distance;
24 | }
25 |
26 | template
27 | GLM_FUNC_QUALIFIER tvec2 closestPointOnLine
28 | (
29 | tvec2 const & point,
30 | tvec2 const & a,
31 | tvec2 const & b
32 | )
33 | {
34 | T LineLength = distance(a, b);
35 | tvec2 Vector = point - a;
36 | tvec2 LineDirection = (b - a) / LineLength;
37 |
38 | // Project Vector to LineDirection to get the distance of point from a
39 | T Distance = dot(Vector, LineDirection);
40 |
41 | if(Distance <= T(0)) return a;
42 | if(Distance >= LineLength) return b;
43 | return a + LineDirection * Distance;
44 | }
45 |
46 | }//namespace glm
47 |
--------------------------------------------------------------------------------
/glm/glm/gtx/extend.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_extend
2 | /// @file glm/gtx/extend.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_extend GLM_GTX_extend
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Extend a position from a source to a position at a defined length.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_extend extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_extend
25 | /// @{
26 |
27 | /// Extends of Length the Origin position using the (Source - Origin) direction.
28 | /// @see gtx_extend
29 | template
30 | GLM_FUNC_DECL genType extend(
31 | genType const & Origin,
32 | genType const & Source,
33 | typename genType::value_type const Length);
34 |
35 | /// @}
36 | }//namespace glm
37 |
38 | #include "extend.inl"
39 |
--------------------------------------------------------------------------------
/glm/glm/gtx/extend.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_extend
2 | /// @file glm/gtx/extend.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER genType extend
8 | (
9 | genType const & Origin,
10 | genType const & Source,
11 | genType const & Distance
12 | )
13 | {
14 | return Origin + (Source - Origin) * Distance;
15 | }
16 |
17 | template
18 | GLM_FUNC_QUALIFIER tvec2 extend
19 | (
20 | tvec2 const & Origin,
21 | tvec2 const & Source,
22 | T const & Distance
23 | )
24 | {
25 | return Origin + (Source - Origin) * Distance;
26 | }
27 |
28 | template
29 | GLM_FUNC_QUALIFIER tvec3 extend
30 | (
31 | tvec3 const & Origin,
32 | tvec3 const & Source,
33 | T const & Distance
34 | )
35 | {
36 | return Origin + (Source - Origin) * Distance;
37 | }
38 |
39 | template
40 | GLM_FUNC_QUALIFIER tvec4 extend
41 | (
42 | tvec4 const & Origin,
43 | tvec4 const & Source,
44 | T const & Distance
45 | )
46 | {
47 | return Origin + (Source - Origin) * Distance;
48 | }
49 | }//namespace glm
50 |
--------------------------------------------------------------------------------
/glm/glm/gtx/float_notmalize.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_float_normalize
2 | /// @file glm/gtx/float_normalize.inl
3 |
4 | #include
5 |
6 | namespace glm
7 | {
8 | template class vecType>
9 | GLM_FUNC_QUALIFIER vecType floatNormalize(vecType const & v)
10 | {
11 | return vecType(v) / static_cast(std::numeric_limits::max());
12 | }
13 |
14 | }//namespace glm
15 |
--------------------------------------------------------------------------------
/glm/glm/gtx/gradient_paint.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_gradient_paint
2 | /// @file glm/gtx/gradient_paint.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER T radialGradient
8 | (
9 | tvec2 const & Center,
10 | T const & Radius,
11 | tvec2 const & Focal,
12 | tvec2 const & Position
13 | )
14 | {
15 | tvec2 F = Focal - Center;
16 | tvec2 D = Position - Focal;
17 | T Radius2 = pow2(Radius);
18 | T Fx2 = pow2(F.x);
19 | T Fy2 = pow2(F.y);
20 |
21 | T Numerator = (D.x * F.x + D.y * F.y) + sqrt(Radius2 * (pow2(D.x) + pow2(D.y)) - pow2(D.x * F.y - D.y * F.x));
22 | T Denominator = Radius2 - (Fx2 + Fy2);
23 | return Numerator / Denominator;
24 | }
25 |
26 | template
27 | GLM_FUNC_QUALIFIER T linearGradient
28 | (
29 | tvec2 const & Point0,
30 | tvec2 const & Point1,
31 | tvec2 const & Position
32 | )
33 | {
34 | tvec2 Dist = Point1 - Point0;
35 | return (Dist.x * (Position.x - Point0.x) + Dist.y * (Position.y - Point0.y)) / glm::dot(Dist, Dist);
36 | }
37 | }//namespace glm
38 |
--------------------------------------------------------------------------------
/glm/glm/gtx/handed_coordinate_space.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_handed_coordinate_space
2 | /// @file glm/gtx/handed_coordinate_space.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER bool rightHanded
8 | (
9 | tvec3 const & tangent,
10 | tvec3 const & binormal,
11 | tvec3 const & normal
12 | )
13 | {
14 | return dot(cross(normal, tangent), binormal) > T(0);
15 | }
16 |
17 | template
18 | GLM_FUNC_QUALIFIER bool leftHanded
19 | (
20 | tvec3 const & tangent,
21 | tvec3 const & binormal,
22 | tvec3 const & normal
23 | )
24 | {
25 | return dot(cross(normal, tangent), binormal) < T(0);
26 | }
27 | }//namespace glm
28 |
--------------------------------------------------------------------------------
/glm/glm/gtx/log_base.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_log_base
2 | /// @file glm/gtx/log_base.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_log_base GLM_GTX_log_base
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Logarithm for any base. base can be a vector or a scalar.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_log_base extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_log_base
25 | /// @{
26 |
27 | /// Logarithm for any base.
28 | /// From GLM_GTX_log_base.
29 | template
30 | GLM_FUNC_DECL genType log(
31 | genType const & x,
32 | genType const & base);
33 |
34 | /// Logarithm for any base.
35 | /// From GLM_GTX_log_base.
36 | template class vecType>
37 | GLM_FUNC_DECL vecType sign(
38 | vecType const & x,
39 | vecType const & base);
40 |
41 | /// @}
42 | }//namespace glm
43 |
44 | #include "log_base.inl"
45 |
--------------------------------------------------------------------------------
/glm/glm/gtx/log_base.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_log_base
2 | /// @file glm/gtx/log_base.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER genType log(genType const & x, genType const & base)
8 | {
9 | assert(x != genType(0));
10 | return glm::log(x) / glm::log(base);
11 | }
12 |
13 | template class vecType>
14 | GLM_FUNC_QUALIFIER vecType log(vecType const & x, vecType const & base)
15 | {
16 | return glm::log(x) / glm::log(base);
17 | }
18 | }//namespace glm
19 |
--------------------------------------------------------------------------------
/glm/glm/gtx/matrix_cross_product.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_matrix_cross_product
2 | /// @file glm/gtx/matrix_cross_product.hpp
3 | ///
4 | /// @see core (dependence)
5 | /// @see gtx_extented_min_max (dependence)
6 | ///
7 | /// @defgroup gtx_matrix_cross_product GLM_GTX_matrix_cross_product
8 | /// @ingroup gtx
9 | ///
10 | /// @brief Build cross product matrices
11 | ///
12 | /// need to be included to use these functionalities.
13 |
14 | #pragma once
15 |
16 | // Dependency:
17 | #include "../glm.hpp"
18 |
19 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
20 | # pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
21 | #endif
22 |
23 | namespace glm
24 | {
25 | /// @addtogroup gtx_matrix_cross_product
26 | /// @{
27 |
28 | //! Build a cross product matrix.
29 | //! From GLM_GTX_matrix_cross_product extension.
30 | template
31 | GLM_FUNC_DECL tmat3x3 matrixCross3(
32 | tvec3 const & x);
33 |
34 | //! Build a cross product matrix.
35 | //! From GLM_GTX_matrix_cross_product extension.
36 | template
37 | GLM_FUNC_DECL tmat4x4 matrixCross4(
38 | tvec3 const & x);
39 |
40 | /// @}
41 | }//namespace glm
42 |
43 | #include "matrix_cross_product.inl"
44 |
--------------------------------------------------------------------------------
/glm/glm/gtx/matrix_cross_product.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_matrix_cross_product
2 | /// @file glm/gtx/matrix_cross_product.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tmat3x3 matrixCross3
8 | (
9 | tvec3 const & x
10 | )
11 | {
12 | tmat3x3 Result(T(0));
13 | Result[0][1] = x.z;
14 | Result[1][0] = -x.z;
15 | Result[0][2] = -x.y;
16 | Result[2][0] = x.y;
17 | Result[1][2] = x.x;
18 | Result[2][1] = -x.x;
19 | return Result;
20 | }
21 |
22 | template
23 | GLM_FUNC_QUALIFIER tmat4x4 matrixCross4
24 | (
25 | tvec3 const & x
26 | )
27 | {
28 | tmat4x4 Result(T(0));
29 | Result[0][1] = x.z;
30 | Result[1][0] = -x.z;
31 | Result[0][2] = -x.y;
32 | Result[2][0] = x.y;
33 | Result[1][2] = x.x;
34 | Result[2][1] = -x.x;
35 | return Result;
36 | }
37 |
38 | }//namespace glm
39 |
--------------------------------------------------------------------------------
/glm/glm/gtx/matrix_decompose.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_matrix_decompose
2 | /// @file glm/gtx/matrix_decompose.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_matrix_decompose GLM_GTX_matrix_decompose
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Decomposes a model matrix to translations, rotation and scale components
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependencies
16 | #include "../mat4x4.hpp"
17 | #include "../vec3.hpp"
18 | #include "../vec4.hpp"
19 | #include "../geometric.hpp"
20 | #include "../gtc/quaternion.hpp"
21 | #include "../gtc/matrix_transform.hpp"
22 |
23 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
24 | # pragma message("GLM: GLM_GTX_matrix_decompose extension included")
25 | #endif
26 |
27 | namespace glm
28 | {
29 | /// @addtogroup gtx_matrix_decompose
30 | /// @{
31 |
32 | /// Decomposes a model matrix to translations, rotation and scale components
33 | /// @see gtx_matrix_decompose
34 | template
35 | GLM_FUNC_DECL bool decompose(
36 | tmat4x4 const & modelMatrix,
37 | tvec3 & scale, tquat & orientation, tvec3 & translation, tvec3 & skew, tvec4 & perspective);
38 |
39 | /// @}
40 | }//namespace glm
41 |
42 | #include "matrix_decompose.inl"
43 |
--------------------------------------------------------------------------------
/glm/glm/gtx/mixed_product.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_mixed_product
2 | /// @file glm/gtx/mixed_product.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_mixed_product GLM_GTX_mixed_producte
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Mixed product of 3 vectors.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_mixed_product extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_mixed_product
25 | /// @{
26 |
27 | /// @brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
28 | template
29 | GLM_FUNC_DECL T mixedProduct(
30 | tvec3 const & v1,
31 | tvec3 const & v2,
32 | tvec3 const & v3);
33 |
34 | /// @}
35 | }// namespace glm
36 |
37 | #include "mixed_product.inl"
38 |
--------------------------------------------------------------------------------
/glm/glm/gtx/mixed_product.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_mixed_product
2 | /// @file glm/gtx/mixed_product.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER T mixedProduct
8 | (
9 | tvec3 const & v1,
10 | tvec3 const & v2,
11 | tvec3 const & v3
12 | )
13 | {
14 | return dot(cross(v1, v2), v3);
15 | }
16 | }//namespace glm
17 |
--------------------------------------------------------------------------------
/glm/glm/gtx/normal.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_normal
2 | /// @file glm/gtx/normal.hpp
3 | ///
4 | /// @see core (dependence)
5 | /// @see gtx_extented_min_max (dependence)
6 | ///
7 | /// @defgroup gtx_normal GLM_GTX_normal
8 | /// @ingroup gtx
9 | ///
10 | /// @brief Compute the normal of a triangle.
11 | ///
12 | /// need to be included to use these functionalities.
13 |
14 | #pragma once
15 |
16 | // Dependency:
17 | #include "../glm.hpp"
18 |
19 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
20 | # pragma message("GLM: GLM_GTX_normal extension included")
21 | #endif
22 |
23 | namespace glm
24 | {
25 | /// @addtogroup gtx_normal
26 | /// @{
27 |
28 | //! Computes triangle normal from triangle points.
29 | //! From GLM_GTX_normal extension.
30 | template
31 | GLM_FUNC_DECL tvec3 triangleNormal(
32 | tvec3 const & p1,
33 | tvec3 const & p2,
34 | tvec3 const & p3);
35 |
36 | /// @}
37 | }//namespace glm
38 |
39 | #include "normal.inl"
40 |
--------------------------------------------------------------------------------
/glm/glm/gtx/normal.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_normal
2 | /// @file glm/gtx/normal.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tvec3 triangleNormal
8 | (
9 | tvec3 const & p1,
10 | tvec3 const & p2,
11 | tvec3 const & p3
12 | )
13 | {
14 | return normalize(cross(p1 - p2, p1 - p3));
15 | }
16 | }//namespace glm
17 |
--------------------------------------------------------------------------------
/glm/glm/gtx/normalize_dot.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_normalize_dot
2 | /// @file glm/gtx/normalize_dot.inl
3 |
4 | namespace glm
5 | {
6 | template class vecType>
7 | GLM_FUNC_QUALIFIER T normalizeDot(vecType const & x, vecType const & y)
8 | {
9 | return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y));
10 | }
11 |
12 | template class vecType>
13 | GLM_FUNC_QUALIFIER T fastNormalizeDot(vecType const & x, vecType const & y)
14 | {
15 | return glm::dot(x, y) * glm::fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y));
16 | }
17 | }//namespace glm
18 |
--------------------------------------------------------------------------------
/glm/glm/gtx/number_precision.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_number_precision
2 | /// @file glm/gtx/number_precision.inl
3 |
4 | namespace glm
5 | {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/glm/glm/gtx/optimum_pow.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_optimum_pow
2 | /// @file glm/gtx/optimum_pow.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_optimum_pow GLM_GTX_optimum_pow
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Integer exponentiation of power functions.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_optimum_pow extension included")
20 | #endif
21 |
22 | namespace glm{
23 | namespace gtx
24 | {
25 | /// @addtogroup gtx_optimum_pow
26 | /// @{
27 |
28 | /// Returns x raised to the power of 2.
29 | ///
30 | /// @see gtx_optimum_pow
31 | template
32 | GLM_FUNC_DECL genType pow2(genType const & x);
33 |
34 | /// Returns x raised to the power of 3.
35 | ///
36 | /// @see gtx_optimum_pow
37 | template
38 | GLM_FUNC_DECL genType pow3(genType const & x);
39 |
40 | /// Returns x raised to the power of 4.
41 | ///
42 | /// @see gtx_optimum_pow
43 | template
44 | GLM_FUNC_DECL genType pow4(genType const & x);
45 |
46 | /// @}
47 | }//namespace gtx
48 | }//namespace glm
49 |
50 | #include "optimum_pow.inl"
51 |
--------------------------------------------------------------------------------
/glm/glm/gtx/optimum_pow.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_optimum_pow
2 | /// @file glm/gtx/optimum_pow.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER genType pow2(genType const & x)
8 | {
9 | return x * x;
10 | }
11 |
12 | template
13 | GLM_FUNC_QUALIFIER genType pow3(genType const & x)
14 | {
15 | return x * x * x;
16 | }
17 |
18 | template
19 | GLM_FUNC_QUALIFIER genType pow4(genType const & x)
20 | {
21 | return (x * x) * (x * x);
22 | }
23 | }//namespace glm
24 |
--------------------------------------------------------------------------------
/glm/glm/gtx/orthonormalize.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_orthonormalize
2 | /// @file glm/gtx/orthonormalize.hpp
3 | ///
4 | /// @see core (dependence)
5 | /// @see gtx_extented_min_max (dependence)
6 | ///
7 | /// @defgroup gtx_orthonormalize GLM_GTX_orthonormalize
8 | /// @ingroup gtx
9 | ///
10 | /// @brief Orthonormalize matrices.
11 | ///
12 | /// need to be included to use these functionalities.
13 |
14 | #pragma once
15 |
16 | // Dependency:
17 | #include "../vec3.hpp"
18 | #include "../mat3x3.hpp"
19 | #include "../geometric.hpp"
20 |
21 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
22 | # pragma message("GLM: GLM_GTX_orthonormalize extension included")
23 | #endif
24 |
25 | namespace glm
26 | {
27 | /// @addtogroup gtx_orthonormalize
28 | /// @{
29 |
30 | /// Returns the orthonormalized matrix of m.
31 | ///
32 | /// @see gtx_orthonormalize
33 | template
34 | GLM_FUNC_DECL tmat3x3 orthonormalize(tmat3x3 const & m);
35 |
36 | /// Orthonormalizes x according y.
37 | ///
38 | /// @see gtx_orthonormalize
39 | template
40 | GLM_FUNC_DECL tvec3 orthonormalize(tvec3 const & x, tvec3 const & y);
41 |
42 | /// @}
43 | }//namespace glm
44 |
45 | #include "orthonormalize.inl"
46 |
--------------------------------------------------------------------------------
/glm/glm/gtx/orthonormalize.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_orthonormalize
2 | /// @file glm/gtx/orthonormalize.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tmat3x3 orthonormalize(tmat3x3 const & m)
8 | {
9 | tmat3x3 r = m;
10 |
11 | r[0] = normalize(r[0]);
12 |
13 | T d0 = dot(r[0], r[1]);
14 | r[1] -= r[0] * d0;
15 | r[1] = normalize(r[1]);
16 |
17 | T d1 = dot(r[1], r[2]);
18 | d0 = dot(r[0], r[2]);
19 | r[2] -= r[0] * d0 + r[1] * d1;
20 | r[2] = normalize(r[2]);
21 |
22 | return r;
23 | }
24 |
25 | template
26 | GLM_FUNC_QUALIFIER tvec3 orthonormalize(tvec3 const & x, tvec3 const & y)
27 | {
28 | return normalize(x - y * dot(y, x));
29 | }
30 | }//namespace glm
31 |
--------------------------------------------------------------------------------
/glm/glm/gtx/perpendicular.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_perpendicular
2 | /// @file glm/gtx/perpendicular.hpp
3 | ///
4 | /// @see core (dependence)
5 | /// @see gtx_projection (dependence)
6 | ///
7 | /// @defgroup gtx_perpendicular GLM_GTX_perpendicular
8 | /// @ingroup gtx
9 | ///
10 | /// @brief Perpendicular of a vector from other one
11 | ///
12 | /// need to be included to use these functionalities.
13 |
14 | #pragma once
15 |
16 | // Dependency:
17 | #include "../glm.hpp"
18 | #include "../gtx/projection.hpp"
19 |
20 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
21 | # pragma message("GLM: GLM_GTX_perpendicular extension included")
22 | #endif
23 |
24 | namespace glm
25 | {
26 | /// @addtogroup gtx_perpendicular
27 | /// @{
28 |
29 | //! Projects x a perpendicular axis of Normal.
30 | //! From GLM_GTX_perpendicular extension.
31 | template
32 | GLM_FUNC_DECL vecType perp(
33 | vecType const & x,
34 | vecType const & Normal);
35 |
36 | /// @}
37 | }//namespace glm
38 |
39 | #include "perpendicular.inl"
40 |
--------------------------------------------------------------------------------
/glm/glm/gtx/perpendicular.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_perpendicular
2 | /// @file glm/gtx/perpendicular.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER vecType perp
8 | (
9 | vecType const & x,
10 | vecType const & Normal
11 | )
12 | {
13 | return x - proj(x, Normal);
14 | }
15 | }//namespace glm
16 |
--------------------------------------------------------------------------------
/glm/glm/gtx/polar_coordinates.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_polar_coordinates
2 | /// @file glm/gtx/polar_coordinates.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_polar_coordinates GLM_GTX_polar_coordinates
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Conversion from Euclidean space to polar space and revert.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_polar_coordinates extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_polar_coordinates
25 | /// @{
26 |
27 | /// Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.
28 | ///
29 | /// @see gtx_polar_coordinates
30 | template
31 | GLM_FUNC_DECL tvec3 polar(
32 | tvec3 const & euclidean);
33 |
34 | /// Convert Polar to Euclidean coordinates.
35 | ///
36 | /// @see gtx_polar_coordinates
37 | template
38 | GLM_FUNC_DECL tvec3 euclidean(
39 | tvec2 const & polar);
40 |
41 | /// @}
42 | }//namespace glm
43 |
44 | #include "polar_coordinates.inl"
45 |
--------------------------------------------------------------------------------
/glm/glm/gtx/polar_coordinates.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_polar_coordinates
2 | /// @file glm/gtx/polar_coordinates.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tvec3 polar
8 | (
9 | tvec3 const & euclidean
10 | )
11 | {
12 | T const Length(length(euclidean));
13 | tvec3 const tmp(euclidean / Length);
14 | T const xz_dist(sqrt(tmp.x * tmp.x + tmp.z * tmp.z));
15 |
16 | return tvec3(
17 | asin(tmp.y), // latitude
18 | atan(tmp.x, tmp.z), // longitude
19 | xz_dist); // xz distance
20 | }
21 |
22 | template
23 | GLM_FUNC_QUALIFIER tvec3 euclidean
24 | (
25 | tvec2 const & polar
26 | )
27 | {
28 | T const latitude(polar.x);
29 | T const longitude(polar.y);
30 |
31 | return tvec3(
32 | cos(latitude) * sin(longitude),
33 | sin(latitude),
34 | cos(latitude) * cos(longitude));
35 | }
36 |
37 | }//namespace glm
38 |
--------------------------------------------------------------------------------
/glm/glm/gtx/projection.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_projection
2 | /// @file glm/gtx/projection.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_projection GLM_GTX_projection
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Projection of a vector to other one
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../geometric.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_projection extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_projection
25 | /// @{
26 |
27 | /// Projects x on Normal.
28 | ///
29 | /// @see gtx_projection
30 | template
31 | GLM_FUNC_DECL vecType proj(vecType const & x, vecType const & Normal);
32 |
33 | /// @}
34 | }//namespace glm
35 |
36 | #include "projection.inl"
37 |
--------------------------------------------------------------------------------
/glm/glm/gtx/projection.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_projection
2 | /// @file glm/gtx/projection.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER vecType proj(vecType const & x, vecType const & Normal)
8 | {
9 | return glm::dot(x, Normal) / glm::dot(Normal, Normal) * Normal;
10 | }
11 | }//namespace glm
12 |
--------------------------------------------------------------------------------
/glm/glm/gtx/raw_data.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_raw_data
2 | /// @file glm/gtx/raw_data.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_raw_data GLM_GTX_raw_data
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Projection of a vector to other one
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependencies
16 | #include "../detail/setup.hpp"
17 | #include "../detail/type_int.hpp"
18 |
19 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
20 | # pragma message("GLM: GLM_GTX_raw_data extension included")
21 | #endif
22 |
23 | namespace glm
24 | {
25 | /// @addtogroup gtx_raw_data
26 | /// @{
27 |
28 | //! Type for byte numbers.
29 | //! From GLM_GTX_raw_data extension.
30 | typedef detail::uint8 byte;
31 |
32 | //! Type for word numbers.
33 | //! From GLM_GTX_raw_data extension.
34 | typedef detail::uint16 word;
35 |
36 | //! Type for dword numbers.
37 | //! From GLM_GTX_raw_data extension.
38 | typedef detail::uint32 dword;
39 |
40 | //! Type for qword numbers.
41 | //! From GLM_GTX_raw_data extension.
42 | typedef detail::uint64 qword;
43 |
44 | /// @}
45 | }// namespace glm
46 |
47 | #include "raw_data.inl"
48 |
--------------------------------------------------------------------------------
/glm/glm/gtx/raw_data.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_raw_data
2 | /// @file glm/gtx/raw_data.inl
3 |
--------------------------------------------------------------------------------
/glm/glm/gtx/scalar_relational.hpp:
--------------------------------------------------------------------------------
1 | /// @ref gtx_scalar_relational
2 | /// @file glm/gtx/scalar_relational.hpp
3 | ///
4 | /// @see core (dependence)
5 | ///
6 | /// @defgroup gtx_scalar_relational GLM_GTX_scalar_relational
7 | /// @ingroup gtx
8 | ///
9 | /// @brief Extend a position from a source to a position at a defined length.
10 | ///
11 | /// need to be included to use these functionalities.
12 |
13 | #pragma once
14 |
15 | // Dependency:
16 | #include "../glm.hpp"
17 |
18 | #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
19 | # pragma message("GLM: GLM_GTX_extend extension included")
20 | #endif
21 |
22 | namespace glm
23 | {
24 | /// @addtogroup gtx_scalar_relational
25 | /// @{
26 |
27 |
28 |
29 | /// @}
30 | }//namespace glm
31 |
32 | #include "scalar_relational.inl"
33 |
--------------------------------------------------------------------------------
/glm/glm/gtx/std_based_type.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_std_based_type
2 | /// @file glm/gtx/std_based_type.inl
3 |
4 | namespace glm
5 | {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/glm/glm/gtx/transform.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtx_transform
2 | /// @file glm/gtx/transform.inl
3 |
4 | namespace glm
5 | {
6 | template
7 | GLM_FUNC_QUALIFIER tmat4x4 translate(tvec3 const & v)
8 | {
9 | return translate(tmat4x4(static_cast(1)), v);
10 | }
11 |
12 | template
13 | GLM_FUNC_QUALIFIER tmat4x4 rotate(T angle, tvec3 const & v)
14 | {
15 | return rotate(tmat4x4(static_cast(1)), angle, v);
16 | }
17 |
18 | template
19 | GLM_FUNC_QUALIFIER tmat4x4 scale(tvec3 const & v)
20 | {
21 | return scale(tmat4x4(static_cast(1)), v);
22 | }
23 |
24 | }//namespace glm
25 |
--------------------------------------------------------------------------------
/glm/glm/gtx/type_aligned.inl:
--------------------------------------------------------------------------------
1 | /// @ref gtc_type_aligned
2 | /// @file glm/gtc/type_aligned.inl
3 |
4 | namespace glm
5 | {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/glm/glm/gtx/type_trait.inl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/glm/gtx/type_trait.inl
--------------------------------------------------------------------------------
/glm/glm/integer.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/integer.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_integer.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/matrix.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/matrix.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_matrix.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/packing.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/packing.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_packing.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/simd/exponential.h:
--------------------------------------------------------------------------------
1 | /// @ref simd
2 | /// @file glm/simd/experimental.h
3 |
4 | #pragma once
5 |
6 | #include "platform.h"
7 |
8 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT
9 |
10 | GLM_FUNC_QUALIFIER glm_vec4 glm_vec1_sqrt_lowp(glm_vec4 x)
11 | {
12 | return _mm_mul_ss(_mm_rsqrt_ss(x), x);
13 | }
14 |
15 | GLM_FUNC_QUALIFIER glm_vec4 glm_vec4_sqrt_lowp(glm_vec4 x)
16 | {
17 | return _mm_mul_ps(_mm_rsqrt_ps(x), x);
18 | }
19 |
20 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT
21 |
--------------------------------------------------------------------------------
/glm/glm/simd/packing.h:
--------------------------------------------------------------------------------
1 | /// @ref simd
2 | /// @file glm/simd/packing.h
3 |
4 | #pragma once
5 |
6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT
7 |
8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT
9 |
--------------------------------------------------------------------------------
/glm/glm/simd/trigonometric.h:
--------------------------------------------------------------------------------
1 | /// @ref simd
2 | /// @file glm/simd/trigonometric.h
3 |
4 | #pragma once
5 |
6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT
7 |
8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT
9 |
10 |
--------------------------------------------------------------------------------
/glm/glm/simd/vector_relational.h:
--------------------------------------------------------------------------------
1 | /// @ref simd
2 | /// @file glm/simd/vector_relational.h
3 |
4 | #pragma once
5 |
6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT
7 |
8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT
9 |
--------------------------------------------------------------------------------
/glm/glm/trigonometric.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/trigonometric.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_trigonometric.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/vec2.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/vec2.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/type_vec2.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/vec3.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/vec3.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/type_vec3.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/vec4.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/vec4.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/type_vec4.hpp"
7 |
--------------------------------------------------------------------------------
/glm/glm/vector_relational.hpp:
--------------------------------------------------------------------------------
1 | /// @ref core
2 | /// @file glm/vector_relational.hpp
3 |
4 | #pragma once
5 |
6 | #include "detail/func_vector_relational.hpp"
7 |
--------------------------------------------------------------------------------
/glm/test/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/test/.DS_Store
--------------------------------------------------------------------------------
/glm/test/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | function(glmCreateTestGTC NAME)
2 | if(GLM_TEST_ENABLE)
3 | set(SAMPLE_NAME test-${NAME})
4 | add_executable(${SAMPLE_NAME} ${NAME}.cpp)
5 |
6 | add_test(
7 | NAME ${SAMPLE_NAME}
8 | COMMAND $ )
9 | endif(GLM_TEST_ENABLE)
10 | endfunction()
11 |
12 | add_subdirectory(bug)
13 | add_subdirectory(core)
14 | add_subdirectory(gtc)
15 | add_subdirectory(gtx)
16 |
17 |
18 |
--------------------------------------------------------------------------------
/glm/test/bug/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | glmCreateTestGTC(bug_ms_vec_static)
2 |
--------------------------------------------------------------------------------
/glm/test/bug/bug_ms_vec_static.cpp:
--------------------------------------------------------------------------------
1 | #define GLM_FORCE_SWIZZLE
2 | #include
3 |
4 | struct Foo
5 | {
6 | static glm::vec2 Bar;
7 | };
8 |
9 | glm::vec2 Foo::Bar = glm::vec2(1.f, 1.f);
10 |
11 | int main()
12 | {
13 | return 0;
14 | }
15 |
--------------------------------------------------------------------------------
/glm/test/core/core_force_unrestricted_gentype.cpp:
--------------------------------------------------------------------------------
1 | #define GLM_FORCE_UNRESTRICTED_GENTYPE
2 |
3 | #include
4 |
5 | int main()
6 | {
7 | int Error = 0;
8 |
9 | return Error;
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/glm/test/core/core_func_noise.cpp:
--------------------------------------------------------------------------------
1 | struct vec4
2 | {
3 | static int length();
4 | };
5 |
6 | int vec4::length()
7 | {
8 | return 4;
9 | }
10 |
11 | int main()
12 | {
13 | int Failed = 0;
14 |
15 | vec4 V;
16 |
17 | int LengthA = V.length();
18 | int LengthB = vec4::length();
19 |
20 | return Failed;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/glm/test/core/core_func_trigonometric.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int main()
4 | {
5 | int Error = 0;
6 |
7 |
8 | return Error;
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/glm/test/core/core_func_vector_relational.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 |
7 | int test_not()
8 | {
9 | int Error(0);
10 |
11 | {
12 | glm::bvec1 v(false);
13 | Error += glm::all(glm::not_(v)) ? 0 : 1;
14 | }
15 |
16 | {
17 | glm::bvec2 v(false);
18 | Error += glm::all(glm::not_(v)) ? 0 : 1;
19 | }
20 |
21 | {
22 | glm::bvec3 v(false);
23 | Error += glm::all(glm::not_(v)) ? 0 : 1;
24 | }
25 |
26 | {
27 | glm::bvec4 v(false);
28 | Error += glm::all(glm::not_(v)) ? 0 : 1;
29 | }
30 |
31 | return Error;
32 | }
33 |
34 | int main()
35 | {
36 | int Error(0);
37 |
38 | Error += test_not();
39 |
40 | return Error;
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/glm/test/core/core_setup_force_cxx98.cpp:
--------------------------------------------------------------------------------
1 | #define GLM_FORCE_CXX98
2 | #include
3 | #include
4 |
5 | int main()
6 | {
7 | int Error = 0;
8 |
9 | return Error;
10 | }
11 |
--------------------------------------------------------------------------------
/glm/test/core/core_type_float.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int test_float_size()
4 | {
5 | return
6 | sizeof(glm::float_t) != sizeof(glm::lowp_float) &&
7 | sizeof(glm::float_t) != sizeof(glm::mediump_float) &&
8 | sizeof(glm::float_t) != sizeof(glm::highp_float);
9 | }
10 |
11 | int test_float_precision()
12 | {
13 | return (
14 | sizeof(glm::lowp_float) <= sizeof(glm::mediump_float) &&
15 | sizeof(glm::mediump_float) <= sizeof(glm::highp_float)) ? 0 : 1;
16 | }
17 |
18 | int test_vec2()
19 | {
20 | return 0;
21 | }
22 |
23 | int main()
24 | {
25 | int Error = 0;
26 |
27 | Error += test_float_size();
28 | Error += test_float_precision();
29 |
30 | return Error;
31 | }
32 |
--------------------------------------------------------------------------------
/glm/test/core/core_type_int.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int test_int_size()
4 | {
5 | return
6 | sizeof(glm::int_t) != sizeof(glm::lowp_int) &&
7 | sizeof(glm::int_t) != sizeof(glm::mediump_int) &&
8 | sizeof(glm::int_t) != sizeof(glm::highp_int);
9 | }
10 |
11 | int test_uint_size()
12 | {
13 | return
14 | sizeof(glm::uint_t) != sizeof(glm::lowp_uint) &&
15 | sizeof(glm::uint_t) != sizeof(glm::mediump_uint) &&
16 | sizeof(glm::uint_t) != sizeof(glm::highp_uint);
17 | }
18 |
19 | int test_int_precision()
20 | {
21 | return (
22 | sizeof(glm::lowp_int) <= sizeof(glm::mediump_int) &&
23 | sizeof(glm::mediump_int) <= sizeof(glm::highp_int)) ? 0 : 1;
24 | }
25 |
26 | int test_uint_precision()
27 | {
28 | return (
29 | sizeof(glm::lowp_uint) <= sizeof(glm::mediump_uint) &&
30 | sizeof(glm::mediump_uint) <= sizeof(glm::highp_uint)) ? 0 : 1;
31 | }
32 |
33 | int main()
34 | {
35 | int Error = 0;
36 |
37 | Error += test_int_size();
38 | Error += test_int_precision();
39 | Error += test_uint_size();
40 | Error += test_uint_precision();
41 |
42 | return Error;
43 | }
44 |
--------------------------------------------------------------------------------
/glm/test/external/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xcysuccess/LearnOpenGLNote/0dc03002531eef4a3f294ea5ba236d34fde4449b/glm/test/external/.DS_Store
--------------------------------------------------------------------------------
/glm/test/external/gli/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(NAME gli)
2 |
3 | file(GLOB ROOT_SOURCE *.cpp)
4 | file(GLOB ROOT_INLINE *.inl)
5 | file(GLOB ROOT_HEADER *.hpp)
6 |
7 | file(GLOB_RECURSE CORE_SOURCE ./core/*.cpp)
8 | file(GLOB_RECURSE CORE_INLINE ./core/*.inl)
9 | file(GLOB_RECURSE CORE_HEADER ./core/*.hpp)
10 |
11 | file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp)
12 | file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl)
13 | file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp)
14 |
15 | source_group("Core Files" FILES ${CORE_SOURCE})
16 | source_group("Core Files" FILES ${CORE_INLINE})
17 | source_group("Core Files" FILES ${CORE_HEADER})
18 | source_group("GTX Files" FILES ${GTX_SOURCE})
19 | source_group("GTX Files" FILES ${GTX_INLINE})
20 | source_group("GTX Files" FILES ${GTX_HEADER})
21 |
22 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
23 |
24 | add_executable(${NAME}
25 | ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER}
26 | ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER}
27 | ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} )
28 |
--------------------------------------------------------------------------------
/glm/test/external/gli/core/dummy.cpp:
--------------------------------------------------------------------------------
1 | int main()
2 | {
3 |
4 | }
5 |
--------------------------------------------------------------------------------
/glm/test/external/gli/core/generate_mipmaps.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-27
5 | // Updated : 2010-09-27
6 | // Licence : This source is under MIT License
7 | // File : gli/core/generate_mipmaps.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GENERATE_MIPMAPS_INCLUDED
11 | #define GLI_GENERATE_MIPMAPS_INCLUDED
12 |
13 | #include "texture2d.hpp"
14 |
15 | namespace gli
16 | {
17 | texture2D generateMipmaps(
18 | texture2D const & Texture,
19 | texture2D::level_type const & BaseLevel);
20 |
21 | }//namespace gli
22 |
23 | #include "generate_mipmaps.inl"
24 |
25 | #endif//GLI_GENERATE_MIPMAPS_INCLUDED
26 |
--------------------------------------------------------------------------------
/glm/test/external/gli/core/operator.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-01-19
5 | // Updated : 2010-01-19
6 | // Licence : This source is under MIT License
7 | // File : gli/core/operator.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_OPERATOR_INCLUDED
11 | #define GLI_OPERATOR_INCLUDED
12 |
13 | #include "texture2d.hpp"
14 |
15 | namespace gli{
16 | namespace detail
17 | {
18 |
19 | }//namespace detail
20 |
21 | texture2D operator+(texture2D const & TextureA, texture2D const & TextureB);
22 | texture2D operator-(texture2D const & TextureA, texture2D const & TextureB);
23 |
24 | }//namespace gli
25 |
26 | #include "operator.inl"
27 |
28 | #endif//GLI_OPERATOR_INCLUDED
29 |
--------------------------------------------------------------------------------
/glm/test/external/gli/core/size.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-08
5 | // Updated : 2010-09-08
6 | // Licence : This source is under MIT License
7 | // File : gli/core/size.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_CORE_SIZE_INCLUDED
11 | #define GLI_CORE_SIZE_INCLUDED
12 |
13 | #include "texture2d.hpp"
14 |
15 | namespace gli
16 | {
17 | //template
18 | image2D::size_type size(
19 | image2D const & Image,
20 | image2D::size_type const & SizeType);
21 |
22 | //template
23 | texture2D::size_type size(
24 | texture2D const & Texture,
25 | texture2D::size_type const & SizeType);
26 |
27 | }//namespace gli
28 |
29 | #include "size.inl"
30 |
31 | #endif//GLI_CORE_SIZE_INCLUDED
32 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gli.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2008-12-19
5 | // Updated : 2010-09-29
6 | // Licence : This source is under MIT License
7 | // File : gli/gli.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | /*! \mainpage OpenGL Image
11 | *
12 | */
13 |
14 | #ifndef GLI_GLI_INCLUDED
15 | #define GLI_GLI_INCLUDED
16 |
17 | #define GLI_VERSION 31
18 | #define GLI_VERSION_MAJOR 0
19 | #define GLI_VERSION_MINOR 3
20 | #define GLI_VERSION_PATCH 1
21 | #define GLI_VERSION_REVISION 0
22 |
23 | #include "./core/texture2d.hpp"
24 | #include "./core/texture2d_array.hpp"
25 | #include "./core/texture_cube.hpp"
26 | #include "./core/texture_cube_array.hpp"
27 | #include "./core/size.hpp"
28 | #include "./core/operation.hpp"
29 | #include "./core/generate_mipmaps.hpp"
30 |
31 | #endif//GLI_GLI_INCLUDED
32 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/compression.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2008-12-19
5 | // Updated : 2010-01-09
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/compression.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_COMPRESSION_INCLUDED
11 | #define GLI_GTX_COMPRESSION_INCLUDED
12 |
13 | namespace gli{
14 | namespace gtx{
15 | namespace compression
16 | {
17 |
18 |
19 | }//namespace compression
20 | }//namespace gtx
21 | }//namespace gli
22 |
23 | namespace gli{using namespace gtx::compression;}
24 |
25 | #include "compression.inl"
26 |
27 | #endif//GLI_GTX_COMPRESSION_INCLUDED
28 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/compression.inl:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2008-12-19
5 | // Updated : 2010-01-09
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/compression.inl
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/gl_texture2d.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-27
5 | // Updated : 2010-10-01
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/gl_texture2d.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_GL_TEXTURE2D_INCLUDED
11 | #define GLI_GTX_GL_TEXTURE2D_INCLUDED
12 |
13 | #include "../gli.hpp"
14 | #include "../gtx/loader.hpp"
15 |
16 | #ifndef GL_VERSION_1_1
17 | #error "ERROR: OpenGL must be included before GLI_GTX_gl_texture2d"
18 | #endif//GL_VERSION_1_1
19 |
20 | namespace gli{
21 | namespace gtx{
22 | namespace gl_texture2d
23 | {
24 | GLuint createTexture2D(std::string const & Filename);
25 | }//namespace gl_texture2d
26 | }//namespace gtx
27 | }//namespace gli
28 |
29 | namespace gli{using namespace gtx::gl_texture2d;}
30 |
31 | #include "gl_texture2d.inl"
32 |
33 | #endif//GLI_GTX_GL_TEXTURE2D_INCLUDED
34 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/gradient.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2008-12-19
5 | // Updated : 2010-01-09
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/gradient.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_GRADIENT_INCLUDED
11 | #define GLI_GTX_GRADIENT_INCLUDED
12 |
13 | #include "../gli.hpp"
14 |
15 | namespace gli{
16 | namespace gtx{
17 | namespace gradient
18 | {
19 | texture2D radial(
20 | texture2D::dimensions_type const & Size,
21 | texture2D::texcoord_type const & Center,
22 | float const & Radius,
23 | texture2D::texcoord_type const & Focal);
24 |
25 | texture2D linear(
26 | texture2D::dimensions_type const & Size,
27 | texture2D::texcoord_type const & Point0,
28 | texture2D::texcoord_type const & Point1);
29 |
30 | }//namespace gradient
31 | }//namespace gtx
32 | }//namespace gli
33 |
34 | namespace gli{using namespace gtx::gradient;}
35 |
36 | #include "gradient.inl"
37 |
38 | #endif//GLI_GTX_GRADIENT_INCLUDED
39 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/loader.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-08
5 | // Updated : 2010-09-27
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/loader.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_LOADER_INCLUDED
11 | #define GLI_GTX_LOADER_INCLUDED
12 |
13 | #include "../gli.hpp"
14 | #include "../gtx/loader_dds9.hpp"
15 | #include "../gtx/loader_dds10.hpp"
16 | #include "../gtx/loader_tga.hpp"
17 |
18 | namespace gli{
19 | namespace gtx{
20 | namespace loader
21 | {
22 | inline texture2D load(
23 | std::string const & Filename);
24 |
25 | inline void save(
26 | texture2D const & Image,
27 | std::string const & Filename);
28 |
29 | }//namespace loader
30 | }//namespace gtx
31 | }//namespace gli
32 |
33 | namespace gli{using namespace gtx::loader;}
34 |
35 | #include "loader.inl"
36 |
37 | #endif//GLI_GTX_LOADER_INCLUDED
38 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/loader_dds10.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-26
5 | // Updated : 2010-09-27
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/loader_dds10.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_LOADER_DDS10_INCLUDED
11 | #define GLI_GTX_LOADER_DDS10_INCLUDED
12 |
13 | #include "../gli.hpp"
14 | #include
15 |
16 | namespace gli{
17 | namespace gtx{
18 | namespace loader_dds10
19 | {
20 | texture2D loadDDS10(
21 | std::string const & Filename);
22 |
23 | void saveDDS10(
24 | texture2D const & Image,
25 | std::string const & Filename);
26 |
27 | }//namespace loader_dds10
28 | }//namespace gtx
29 | }//namespace gli
30 |
31 | namespace gli{using namespace gtx::loader_dds10;}
32 |
33 | #include "loader_dds10.inl"
34 |
35 | #endif//GLI_GTX_LOADER_DDS10_INCLUDED
36 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/loader_dds9.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-08
5 | // Updated : 2010-09-27
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/loader_dds9.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_LOADER_DDS9_INCLUDED
11 | #define GLI_GTX_LOADER_DDS9_INCLUDED
12 |
13 | #include "../gli.hpp"
14 | #include
15 |
16 | namespace gli{
17 | namespace gtx{
18 | namespace loader_dds9
19 | {
20 | texture2D loadDDS9(
21 | std::string const & Filename);
22 |
23 | void saveDDS9(
24 | texture2D const & Texture,
25 | std::string const & Filename);
26 |
27 | void saveTextureCubeDDS9(
28 | textureCube const & Texture,
29 | std::string const & Filename);
30 |
31 | }//namespace loader_dds9
32 | }//namespace gtx
33 | }//namespace gli
34 |
35 | namespace gli{using namespace gtx::loader_dds9;}
36 |
37 | #include "loader_dds9.inl"
38 |
39 | #endif//GLI_GTX_LOADER_DDS9_INCLUDED
40 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/loader_tga.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-09-08
5 | // Updated : 2010-09-27
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/loader_tga.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_LOADER_TGA_INCLUDED
11 | #define GLI_GTX_LOADER_TGA_INCLUDED
12 |
13 | #include "../gli.hpp"
14 | #include
15 | #include
16 |
17 | namespace gli{
18 | namespace gtx{
19 | namespace loader_tga
20 | {
21 | texture2D loadTGA(
22 | std::string const & Filename);
23 |
24 | void saveTGA(
25 | texture2D const & Image,
26 | std::string const & Filename);
27 |
28 | }//namespace loader_tga
29 | }//namespace gtx
30 | }//namespace gli
31 |
32 | namespace gli{using namespace gtx::loader_tga;}
33 |
34 | #include "loader_tga.inl"
35 |
36 | #endif//GLI_GTX_LOADER_TGA_INCLUDED
37 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/wavelet.hpp:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-01-09
5 | // Updated : 2010-01-09
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/wavelet.hpp
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
10 | #ifndef GLI_GTX_WAVELET_INCLUDED
11 | #define GLI_GTX_WAVELET_INCLUDED
12 |
13 | namespace gli{
14 | namespace gtx{
15 | namespace wavelet
16 | {
17 |
18 |
19 | }//namespace wavelet
20 | }//namespace gtx
21 | }//namespace gli
22 |
23 | namespace gli{using namespace gtx::wavelet;}
24 |
25 | #include "wavelet.inl"
26 |
27 | #endif//GLI_GTX_WAVELET_INCLUDED
28 |
--------------------------------------------------------------------------------
/glm/test/external/gli/gtx/wavelet.inl:
--------------------------------------------------------------------------------
1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
2 | // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net)
3 | ///////////////////////////////////////////////////////////////////////////////////////////////////
4 | // Created : 2010-01-09
5 | // Updated : 2010-01-09
6 | // Licence : This source is under MIT License
7 | // File : gli/gtx/wavelet.inl
8 | ///////////////////////////////////////////////////////////////////////////////////////////////////
9 |
--------------------------------------------------------------------------------
/glm/test/glm.cppcheck:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/glm/test/gtc/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | glmCreateTestGTC(gtc_bitfield)
2 | glmCreateTestGTC(gtc_color_space)
3 | glmCreateTestGTC(gtc_constants)
4 | glmCreateTestGTC(gtc_epsilon)
5 | glmCreateTestGTC(gtc_functions)
6 | glmCreateTestGTC(gtc_integer)
7 | glmCreateTestGTC(gtc_matrix_access)
8 | glmCreateTestGTC(gtc_matrix_integer)
9 | glmCreateTestGTC(gtc_matrix_inverse)
10 | glmCreateTestGTC(gtc_matrix_transform)
11 | glmCreateTestGTC(gtc_noise)
12 | glmCreateTestGTC(gtc_packing)
13 | glmCreateTestGTC(gtc_quaternion)
14 | glmCreateTestGTC(gtc_random)
15 | glmCreateTestGTC(gtc_round)
16 | glmCreateTestGTC(gtc_reciprocal)
17 | glmCreateTestGTC(gtc_type_aligned)
18 | glmCreateTestGTC(gtc_type_precision)
19 | glmCreateTestGTC(gtc_type_ptr)
20 | glmCreateTestGTC(gtc_ulp)
21 | glmCreateTestGTC(gtc_vec1)
22 |
--------------------------------------------------------------------------------
/glm/test/gtc/gtc_constants.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int test_epsilon()
4 | {
5 | int Error(0);
6 |
7 | {
8 | float Test = glm::epsilon();
9 | }
10 |
11 | {
12 | double Test = glm::epsilon();
13 | }
14 |
15 | return Error;
16 | }
17 |
18 | int main()
19 | {
20 | int Error(0);
21 |
22 | //float MinHalf = 0.0f;
23 | //while (glm::half(MinHalf) == glm::half(0.0f))
24 | // MinHalf += std::numeric_limits::epsilon();
25 | Error += test_epsilon();
26 |
27 | return Error;
28 | }
29 |
--------------------------------------------------------------------------------
/glm/test/gtc/gtc_functions.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | int test_gauss_1d()
5 | {
6 | int Error = 0;
7 |
8 | std::vector Result(20);
9 | for(std::size_t i = 0, n = Result.size(); i < n; ++i)
10 | Result[i] = glm::gauss(static_cast(i) * 0.1f, 0.0f, 1.0f);
11 |
12 | return Error;
13 | }
14 |
15 | int test_gauss_2d()
16 | {
17 | int Error = 0;
18 |
19 | std::vector Result(20);
20 | for(std::size_t i = 0, n = Result.size(); i < n; ++i)
21 | Result[i] = glm::gauss(glm::vec2(i) * 0.1f, glm::vec2(0.0f), glm::vec2(1.0f));
22 |
23 | return Error;
24 | }
25 |
26 | int main()
27 | {
28 | int Error = 0;
29 |
30 | Error += test_gauss_1d();
31 | Error += test_gauss_2d();
32 |
33 | return Error;
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/glm/test/gtc/gtc_matrix_integer.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int main()
4 | {
5 | int Error = 0;
6 |
7 | return Error;
8 | }
9 |
--------------------------------------------------------------------------------
/glm/test/gtc/gtc_matrix_inverse.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include