diff --git a/.vscode/settings.json b/.vscode/settings.json index f64d257b6..7dff17331 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "**/ros_ws/install/**": true, "**/ros_ws/log/**": true }, - "github.copilot.chat.codeGeneration.useInstructionFiles": true + "github.copilot.chat.codeGeneration.useInstructionFiles": true, + "ROS2.distro": "humble" } \ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/CMakeLists.txt b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/CMakeLists.txt index 55659cda0..db6838193 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/CMakeLists.txt +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/CMakeLists.txt @@ -23,34 +23,28 @@ find_package(airstack_common REQUIRED) find_package(airstack_msgs REQUIRED) find_package(trajectory_library REQUIRED) -#add_executable(droan src/droan.cpp src/glad/src/glad.c) -#target_include_directories(droan PUBLIC -# $ -# $) -#target_compile_features(droan PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 -#ament_target_dependencies(droan rclcpp sensor_msgs stereo_msgs nav_msgs visualization_msgs tf2 tf2_ros tf2_geometry_msgs cv_bridge ament_index_cpp pcl_conversions airstack_common airstack_msgs) -#target_link_libraries(droan glfw dl assimp EGL GL) - - add_executable(expand src/expand.cpp src/gl_interface.cpp src/global_plan.cpp src/rewind_monitor.cpp src/glad/src/glad.c) target_include_directories(expand PUBLIC $ $) -target_compile_features(expand PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 +target_compile_features(expand PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 ament_target_dependencies(expand rclcpp sensor_msgs stereo_msgs nav_msgs visualization_msgs tf2 tf2_ros tf2_geometry_msgs cv_bridge ament_index_cpp pcl_conversions airstack_common airstack_msgs trajectory_library) target_link_libraries(expand glfw dl assimp EGL GL) -#install(TARGETS droan DESTINATION lib/${PROJECT_NAME}) +# install(TARGETS droan DESTINATION lib/${PROJECT_NAME}) install(TARGETS expand DESTINATION lib/${PROJECT_NAME}) -#install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) + +# install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) install(DIRECTORY shaders DESTINATION share/${PROJECT_NAME}) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) + # the following line skips the linter which checks for copyrights # comment the line when a copyright and license is added to all source files set(ament_cmake_copyright_FOUND TRUE) + # the following line skips cpplint (only works in a git repo) # comment the line when this package is in a git repo and when # a copyright and license is added to all source files diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/README.md b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/README.md index c6d2baea7..09078a075 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/README.md +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/README.md @@ -30,14 +30,13 @@ Trajectories are generated using snaps in different directions. Collision checki `dt` - The increment in seconds for generating points along the trajectory. -`downsample_scale` - The factor by which the input disparity image will be downsampled. +`downsample_scale` - The factor by which the input disparity image will be downsampled. `graph_nodes` - The number of expanded foreground and background disparity image pairs to do collision checking on. `graph_distance_threshold` - The distance in meters after which a new node will be added to the list. `graph_angle_threshold` - The angle in degrees that the drone has to yaw before a new node will be added to the list. - Rewinds are triggered by two events. When all trajectories are in collision from length of time the drone will rewind for a set duraiton. When the drone is considered to be staionary for too long, the drone will rewind for some distance or duration, whichever is satisfied first. `all_in_collision_duration_threshold` - The amount of time in seconds all trajectories need to be in collision for a rewind to be triggered. diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/cone.dae b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/cone.dae index 4c8925d93..cf61ac456 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/cone.dae +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/cone.dae @@ -1,5 +1,6 @@ - + Blender User @@ -7,7 +8,7 @@ 2025-10-02T13:38:36 2025-10-02T13:38:36 - + Z_UP @@ -136,47 +137,128 @@ - + - 0 1 -1 0.1950903 0.9807853 -1 0.3826835 0.9238795 -1 0.5555703 0.8314696 -1 0.7071068 0.7071068 -1 0.8314697 0.5555702 -1 0.9238795 0.3826834 -1 0.9807853 0.1950903 -1 1 0 -1 0.9807853 -0.1950902 -1 0.9238796 -0.3826833 -1 0.8314697 -0.5555702 -1 0.7071068 -0.7071068 -1 0.5555702 -0.8314697 -1 0.3826833 -0.9238796 -1 0.1950901 -0.9807853 -1 -3.25841e-7 -1 -1 -0.1950907 -0.9807852 -1 -0.3826839 -0.9238793 -1 -0.5555707 -0.8314693 -1 -0.7071073 -0.7071063 -1 -0.83147 -0.5555697 -1 -0.9238799 -0.3826827 -1 0 0 1 -0.9807854 -0.1950894 -1 -1 9.65599e-7 -1 -0.9807851 0.1950913 -1 -0.9238791 0.3826845 -1 -0.8314689 0.5555713 -1 -0.7071059 0.7071077 -1 -0.5555691 0.8314704 -1 -0.3826821 0.9238801 -1 -0.1950888 0.9807856 -1 + 0 1 -1 0.1950903 0.9807853 -1 + 0.3826835 0.9238795 -1 0.5555703 0.8314696 -1 0.7071068 0.7071068 -1 0.8314697 0.5555702 + -1 0.9238795 0.3826834 -1 0.9807853 0.1950903 -1 1 0 -1 0.9807853 -0.1950902 -1 + 0.9238796 -0.3826833 -1 0.8314697 -0.5555702 -1 0.7071068 -0.7071068 -1 0.5555702 + -0.8314697 -1 0.3826833 -0.9238796 -1 0.1950901 -0.9807853 -1 -3.25841e-7 -1 -1 + -0.1950907 -0.9807852 -1 -0.3826839 -0.9238793 -1 -0.5555707 -0.8314693 -1 -0.7071073 + -0.7071063 -1 -0.83147 -0.5555697 -1 -0.9238799 -0.3826827 -1 0 0 1 -0.9807854 + -0.1950894 -1 -1 9.65599e-7 -1 -0.9807851 0.1950913 -1 -0.9238791 0.3826845 -1 + -0.8314689 0.5555713 -1 -0.7071059 0.7071077 -1 -0.5555691 0.8314704 -1 -0.3826821 + 0.9238801 -1 -0.1950888 0.9807856 -1 - - - + + + - 0.08775365 0.8909768 0.4454883 0.2598883 0.856737 0.4454884 0.4220357 0.7895733 0.4454885 0.5679646 0.6920667 0.4454883 0.6920668 0.5679646 0.4454883 0.7895735 0.4220356 0.4454884 0.856737 0.2598884 0.4454883 0.8909767 0.08775365 0.4454883 0.8909767 -0.08775341 0.4454883 0.856737 -0.2598884 0.4454884 0.7895734 -0.4220355 0.4454883 0.6920668 -0.5679646 0.4454883 0.5679646 -0.6920668 0.4454883 0.4220357 -0.7895733 0.4454883 0.2598879 -0.8567371 0.4454883 0.08775335 -0.8909768 0.4454884 -0.08775389 -0.8909767 0.4454883 -0.2598888 -0.8567368 0.4454884 -0.422036 -0.7895731 0.4454883 -0.5679651 -0.6920664 0.4454884 -0.6920671 -0.5679641 0.4454883 -0.7895737 -0.4220352 0.4454885 -0.8567373 -0.2598874 0.4454883 -0.8909768 -0.08775281 0.4454883 -0.8909767 0.08775442 0.4454883 -0.8567367 0.2598893 0.4454884 -0.7895729 0.4220365 0.4454883 -0.6920661 0.5679656 0.4454883 -0.5679637 0.6920675 0.4454883 -0.4220346 0.7895739 0.4454883 -0.2598869 0.8567374 0.4454883 -0.08775299 0.8909767 0.4454884 0 0 -1 -3.97511e-6 0 -1 3.97512e-6 0 -1 3.88857e-7 0 -1 0 0 -1 + 0.08775365 0.8909768 0.4454883 + 0.2598883 0.856737 0.4454884 0.4220357 0.7895733 0.4454885 0.5679646 0.6920667 0.4454883 + 0.6920668 0.5679646 0.4454883 0.7895735 0.4220356 0.4454884 0.856737 0.2598884 0.4454883 + 0.8909767 0.08775365 0.4454883 0.8909767 -0.08775341 0.4454883 0.856737 -0.2598884 + 0.4454884 0.7895734 -0.4220355 0.4454883 0.6920668 -0.5679646 0.4454883 0.5679646 + -0.6920668 0.4454883 0.4220357 -0.7895733 0.4454883 0.2598879 -0.8567371 0.4454883 + 0.08775335 -0.8909768 0.4454884 -0.08775389 -0.8909767 0.4454883 -0.2598888 -0.8567368 + 0.4454884 -0.422036 -0.7895731 0.4454883 -0.5679651 -0.6920664 0.4454884 -0.6920671 + -0.5679641 0.4454883 -0.7895737 -0.4220352 0.4454885 -0.8567373 -0.2598874 0.4454883 + -0.8909768 -0.08775281 0.4454883 -0.8909767 0.08775442 0.4454883 -0.8567367 0.2598893 + 0.4454884 -0.7895729 0.4220365 0.4454883 -0.6920661 0.5679656 0.4454883 -0.5679637 + 0.6920675 0.4454883 -0.4220346 0.7895739 0.4454883 -0.2598869 0.8567374 0.4454883 + -0.08775299 0.8909767 0.4454884 0 0 -1 -3.97511e-6 0 -1 3.97512e-6 0 -1 3.88857e-7 0 -1 + 0 0 -1 - - - + + + - 0.25 0.49 0.25 0.25 0.2968217 0.4853885 0.2968217 0.4853885 0.25 0.25 0.341844 0.4717311 0.341844 0.4717311 0.25 0.25 0.3833369 0.4495527 0.3833369 0.4495527 0.25 0.25 0.4197056 0.4197056 0.4197056 0.4197056 0.25 0.25 0.4495527 0.3833369 0.4495527 0.3833369 0.25 0.25 0.4717311 0.341844 0.4717311 0.341844 0.25 0.25 0.4853885 0.2968217 0.4853885 0.2968217 0.25 0.25 0.49 0.25 0.49 0.25 0.25 0.25 0.4853885 0.2031783 0.4853885 0.2031783 0.25 0.25 0.4717311 0.158156 0.4717311 0.158156 0.25 0.25 0.4495527 0.1166631 0.4495527 0.1166631 0.25 0.25 0.4197056 0.08029437 0.4197056 0.08029437 0.25 0.25 0.3833369 0.05044728 0.3833369 0.05044728 0.25 0.25 0.341844 0.02826887 0.341844 0.02826887 0.25 0.25 0.2968216 0.01461148 0.2968216 0.01461148 0.25 0.25 0.2499999 0.00999999 0.2499999 0.00999999 0.25 0.25 0.2031782 0.01461154 0.2031782 0.01461154 0.25 0.25 0.1581559 0.02826893 0.1581559 0.02826893 0.25 0.25 0.116663 0.05044734 0.116663 0.05044734 0.25 0.25 0.08029425 0.08029448 0.08029425 0.08029448 0.25 0.25 0.05044716 0.1166633 0.05044716 0.1166633 0.25 0.25 0.02826881 0.1581561 0.02826881 0.1581561 0.25 0.25 0.01461148 0.2031785 0.01461148 0.2031785 0.25 0.25 0.00999999 0.2500002 0.00999999 0.2500002 0.25 0.25 0.01461154 0.2968219 0.01461154 0.2968219 0.25 0.25 0.02826899 0.3418443 0.02826899 0.3418443 0.25 0.25 0.05044746 0.3833371 0.05044746 0.3833371 0.25 0.25 0.08029454 0.4197058 0.08029454 0.4197058 0.25 0.25 0.1166634 0.4495529 0.1166634 0.4495529 0.25 0.25 0.1581563 0.4717312 0.1581563 0.4717312 0.25 0.25 0.2031787 0.4853885 0.2031787 0.4853885 0.25 0.25 0.25 0.49 0.9853885 0.2968217 0.7968216 0.01461148 0.5146115 0.2031785 0.7031787 0.4853885 0.75 0.49 0.7968217 0.4853885 0.7968217 0.4853885 0.841844 0.4717311 0.8833369 0.4495527 0.8833369 0.4495527 0.9197056 0.4197056 0.9495527 0.3833369 0.9495527 0.3833369 0.9717311 0.341844 0.8833369 0.4495527 0.9717311 0.341844 0.9853885 0.2968217 0.8833369 0.4495527 0.9853885 0.2968217 0.99 0.25 0.9853885 0.2031783 0.9853885 0.2031783 0.9717311 0.158156 0.9853885 0.2968217 0.9717311 0.158156 0.9495527 0.1166631 0.9853885 0.2968217 0.9495527 0.1166631 0.9197056 0.08029437 0.7968216 0.01461148 0.9197056 0.08029437 0.8833369 0.05044728 0.7968216 0.01461148 0.8833369 0.05044728 0.841844 0.02826887 0.7968216 0.01461148 0.7968216 0.01461148 0.75 0.00999999 0.7031782 0.01461154 0.7031782 0.01461154 0.6581559 0.02826893 0.616663 0.05044734 0.616663 0.05044734 0.5802943 0.08029448 0.5146115 0.2031785 0.5802943 0.08029448 0.5504472 0.1166633 0.5146115 0.2031785 0.5504472 0.1166633 0.5282688 0.1581561 0.5146115 0.2031785 0.5146115 0.2031785 0.51 0.2500002 0.5146116 0.2968219 0.5146116 0.2968219 0.5282691 0.3418443 0.5504475 0.3833371 0.5504475 0.3833371 0.5802946 0.4197058 0.6166634 0.4495529 0.6166634 0.4495529 0.6581563 0.4717312 0.7031787 0.4853885 0.7031787 0.4853885 0.7968217 0.4853885 0.8833369 0.4495527 0.7968216 0.01461148 0.7031782 0.01461154 0.5146115 0.2031785 0.7031782 0.01461154 0.616663 0.05044734 0.5146115 0.2031785 0.5146115 0.2031785 0.5146116 0.2968219 0.7031787 0.4853885 0.5146116 0.2968219 0.5504475 0.3833371 0.7031787 0.4853885 0.5504475 0.3833371 0.6166634 0.4495529 0.7031787 0.4853885 0.7031787 0.4853885 0.8833369 0.4495527 0.9853885 0.2968217 0.9853885 0.2968217 0.9495527 0.1166631 0.7968216 0.01461148 0.7031787 0.4853885 0.9853885 0.2968217 0.5146115 0.2031785 + 0.25 0.49 0.25 0.25 0.2968217 + 0.4853885 0.2968217 0.4853885 0.25 0.25 0.341844 0.4717311 0.341844 0.4717311 0.25 0.25 + 0.3833369 0.4495527 0.3833369 0.4495527 0.25 0.25 0.4197056 0.4197056 0.4197056 + 0.4197056 0.25 0.25 0.4495527 0.3833369 0.4495527 0.3833369 0.25 0.25 0.4717311 0.341844 + 0.4717311 0.341844 0.25 0.25 0.4853885 0.2968217 0.4853885 0.2968217 0.25 0.25 0.49 0.25 + 0.49 0.25 0.25 0.25 0.4853885 0.2031783 0.4853885 0.2031783 0.25 0.25 0.4717311 0.158156 + 0.4717311 0.158156 0.25 0.25 0.4495527 0.1166631 0.4495527 0.1166631 0.25 0.25 0.4197056 + 0.08029437 0.4197056 0.08029437 0.25 0.25 0.3833369 0.05044728 0.3833369 0.05044728 0.25 + 0.25 0.341844 0.02826887 0.341844 0.02826887 0.25 0.25 0.2968216 0.01461148 0.2968216 + 0.01461148 0.25 0.25 0.2499999 0.00999999 0.2499999 0.00999999 0.25 0.25 0.2031782 + 0.01461154 0.2031782 0.01461154 0.25 0.25 0.1581559 0.02826893 0.1581559 0.02826893 0.25 + 0.25 0.116663 0.05044734 0.116663 0.05044734 0.25 0.25 0.08029425 0.08029448 0.08029425 + 0.08029448 0.25 0.25 0.05044716 0.1166633 0.05044716 0.1166633 0.25 0.25 0.02826881 + 0.1581561 0.02826881 0.1581561 0.25 0.25 0.01461148 0.2031785 0.01461148 0.2031785 0.25 + 0.25 0.00999999 0.2500002 0.00999999 0.2500002 0.25 0.25 0.01461154 0.2968219 0.01461154 + 0.2968219 0.25 0.25 0.02826899 0.3418443 0.02826899 0.3418443 0.25 0.25 0.05044746 + 0.3833371 0.05044746 0.3833371 0.25 0.25 0.08029454 0.4197058 0.08029454 0.4197058 0.25 + 0.25 0.1166634 0.4495529 0.1166634 0.4495529 0.25 0.25 0.1581563 0.4717312 0.1581563 + 0.4717312 0.25 0.25 0.2031787 0.4853885 0.2031787 0.4853885 0.25 0.25 0.25 0.49 + 0.9853885 0.2968217 0.7968216 0.01461148 0.5146115 0.2031785 0.7031787 0.4853885 0.75 + 0.49 0.7968217 0.4853885 0.7968217 0.4853885 0.841844 0.4717311 0.8833369 0.4495527 + 0.8833369 0.4495527 0.9197056 0.4197056 0.9495527 0.3833369 0.9495527 0.3833369 + 0.9717311 0.341844 0.8833369 0.4495527 0.9717311 0.341844 0.9853885 0.2968217 0.8833369 + 0.4495527 0.9853885 0.2968217 0.99 0.25 0.9853885 0.2031783 0.9853885 0.2031783 + 0.9717311 0.158156 0.9853885 0.2968217 0.9717311 0.158156 0.9495527 0.1166631 0.9853885 + 0.2968217 0.9495527 0.1166631 0.9197056 0.08029437 0.7968216 0.01461148 0.9197056 + 0.08029437 0.8833369 0.05044728 0.7968216 0.01461148 0.8833369 0.05044728 0.841844 + 0.02826887 0.7968216 0.01461148 0.7968216 0.01461148 0.75 0.00999999 0.7031782 + 0.01461154 0.7031782 0.01461154 0.6581559 0.02826893 0.616663 0.05044734 0.616663 + 0.05044734 0.5802943 0.08029448 0.5146115 0.2031785 0.5802943 0.08029448 0.5504472 + 0.1166633 0.5146115 0.2031785 0.5504472 0.1166633 0.5282688 0.1581561 0.5146115 + 0.2031785 0.5146115 0.2031785 0.51 0.2500002 0.5146116 0.2968219 0.5146116 0.2968219 + 0.5282691 0.3418443 0.5504475 0.3833371 0.5504475 0.3833371 0.5802946 0.4197058 + 0.6166634 0.4495529 0.6166634 0.4495529 0.6581563 0.4717312 0.7031787 0.4853885 + 0.7031787 0.4853885 0.7968217 0.4853885 0.8833369 0.4495527 0.7968216 0.01461148 + 0.7031782 0.01461154 0.5146115 0.2031785 0.7031782 0.01461154 0.616663 0.05044734 + 0.5146115 0.2031785 0.5146115 0.2031785 0.5146116 0.2968219 0.7031787 0.4853885 + 0.5146116 0.2968219 0.5504475 0.3833371 0.7031787 0.4853885 0.5504475 0.3833371 + 0.6166634 0.4495529 0.7031787 0.4853885 0.7031787 0.4853885 0.8833369 0.4495527 + 0.9853885 0.2968217 0.9853885 0.2968217 0.9495527 0.1166631 0.7968216 0.01461148 + 0.7031787 0.4853885 0.9853885 0.2968217 0.5146115 0.2031785 - - + + - + - - - -

0 0 0 23 0 1 1 0 2 1 1 3 23 1 4 2 1 5 2 2 6 23 2 7 3 2 8 3 3 9 23 3 10 4 3 11 4 4 12 23 4 13 5 4 14 5 5 15 23 5 16 6 5 17 6 6 18 23 6 19 7 6 20 7 7 21 23 7 22 8 7 23 8 8 24 23 8 25 9 8 26 9 9 27 23 9 28 10 9 29 10 10 30 23 10 31 11 10 32 11 11 33 23 11 34 12 11 35 12 12 36 23 12 37 13 12 38 13 13 39 23 13 40 14 13 41 14 14 42 23 14 43 15 14 44 15 15 45 23 15 46 16 15 47 16 16 48 23 16 49 17 16 50 17 17 51 23 17 52 18 17 53 18 18 54 23 18 55 19 18 56 19 19 57 23 19 58 20 19 59 20 20 60 23 20 61 21 20 62 21 21 63 23 21 64 22 21 65 22 22 66 23 22 67 24 22 68 24 23 69 23 23 70 25 23 71 25 24 72 23 24 73 26 24 74 26 25 75 23 25 76 27 25 77 27 26 78 23 26 79 28 26 80 28 27 81 23 27 82 29 27 83 29 28 84 23 28 85 30 28 86 30 29 87 23 29 88 31 29 89 31 30 90 23 30 91 32 30 92 32 31 93 23 31 94 0 31 95 7 32 96 15 32 97 24 32 98 32 32 99 0 32 100 1 32 101 1 32 102 2 32 103 3 32 104 3 32 105 4 32 106 5 32 107 5 32 108 6 32 109 3 32 110 6 32 111 7 32 112 3 32 113 7 32 114 8 32 115 9 32 116 9 32 117 10 32 118 7 32 119 10 32 120 11 32 121 7 32 122 11 32 123 12 32 124 15 32 125 12 32 126 13 32 127 15 32 128 13 32 129 14 32 130 15 32 131 15 32 132 16 32 133 17 32 134 17 32 135 18 32 136 19 32 137 19 32 138 20 32 139 24 32 140 20 32 141 21 32 142 24 32 143 21 32 144 22 32 145 24 32 146 24 33 147 25 33 148 26 33 149 26 34 150 27 34 151 28 34 152 28 32 153 29 32 154 30 32 155 30 32 156 31 32 157 32 32 158 32 32 159 1 32 160 3 32 161 15 32 162 17 32 163 24 32 164 17 32 165 19 32 166 24 32 167 24 35 168 26 35 169 32 35 170 26 32 171 28 32 172 32 32 173 28 32 174 30 32 175 32 32 176 32 32 177 3 32 178 7 32 179 7 32 180 11 32 181 15 32 182 32 36 183 7 36 184 24 36 185

+ + + +

0 0 0 23 0 1 1 0 2 1 1 3 23 1 4 2 1 5 2 2 6 23 2 7 3 2 8 3 3 9 23 3 10 4 3 11 4 4 12 23 + 4 13 5 4 14 5 5 15 23 5 16 6 5 17 6 6 18 23 6 19 7 6 20 7 7 21 23 7 22 8 7 23 8 8 24 23 + 8 25 9 8 26 9 9 27 23 9 28 10 9 29 10 10 30 23 10 31 11 10 32 11 11 33 23 11 34 12 11 35 + 12 12 36 23 12 37 13 12 38 13 13 39 23 13 40 14 13 41 14 14 42 23 14 43 15 14 44 15 15 + 45 23 15 46 16 15 47 16 16 48 23 16 49 17 16 50 17 17 51 23 17 52 18 17 53 18 18 54 23 + 18 55 19 18 56 19 19 57 23 19 58 20 19 59 20 20 60 23 20 61 21 20 62 21 21 63 23 21 64 + 22 21 65 22 22 66 23 22 67 24 22 68 24 23 69 23 23 70 25 23 71 25 24 72 23 24 73 26 24 + 74 26 25 75 23 25 76 27 25 77 27 26 78 23 26 79 28 26 80 28 27 81 23 27 82 29 27 83 29 + 28 84 23 28 85 30 28 86 30 29 87 23 29 88 31 29 89 31 30 90 23 30 91 32 30 92 32 31 93 + 23 31 94 0 31 95 7 32 96 15 32 97 24 32 98 32 32 99 0 32 100 1 32 101 1 32 102 2 32 103 + 3 32 104 3 32 105 4 32 106 5 32 107 5 32 108 6 32 109 3 32 110 6 32 111 7 32 112 3 32 + 113 7 32 114 8 32 115 9 32 116 9 32 117 10 32 118 7 32 119 10 32 120 11 32 121 7 32 122 + 11 32 123 12 32 124 15 32 125 12 32 126 13 32 127 15 32 128 13 32 129 14 32 130 15 32 + 131 15 32 132 16 32 133 17 32 134 17 32 135 18 32 136 19 32 137 19 32 138 20 32 139 24 + 32 140 20 32 141 21 32 142 24 32 143 21 32 144 22 32 145 24 32 146 24 33 147 25 33 148 + 26 33 149 26 34 150 27 34 151 28 34 152 28 32 153 29 32 154 30 32 155 30 32 156 31 32 + 157 32 32 158 32 32 159 1 32 160 3 32 161 15 32 162 17 32 163 24 32 164 17 32 165 19 32 + 166 24 32 167 24 35 168 26 35 169 32 35 170 26 32 171 28 32 172 32 32 173 28 32 174 30 + 32 175 32 32 176 32 32 177 3 32 178 7 32 179 7 32 180 11 32 181 15 32 182 32 36 183 7 36 + 184 24 36 185

@@ -185,27 +267,31 @@ 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 - + - -0.2908646 -0.7711008 0.5663933 4.076245 0.9551712 -0.1998833 0.2183912 1.005454 -0.05518904 0.6045247 0.7946723 5.903862 0 0 0 1 - + -0.2908646 -0.7711008 0.5663933 4.076245 0.9551712 -0.1998833 + 0.2183912 1.005454 -0.05518904 0.6045247 0.7946723 5.903862 0 0 0 1 + - 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1 - + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 + -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1 + - 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 - + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 + -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 + - -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 - + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 + 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + - +
\ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere.dae b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere.dae index 76356f3ca..9351aba32 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere.dae +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere.dae @@ -1,5 +1,6 @@ - + Blender User @@ -7,7 +8,7 @@ 2025-09-22T11:13:38 2025-09-22T11:13:38 - + Z_UP @@ -75,47 +76,768 @@ - + - 0 0.1950903 0.9807853 0 0.3826835 0.9238795 0 0.5555703 0.8314696 0 0.7071068 0.7071068 0 0.8314697 0.5555702 0 0.9238795 0.3826834 0 0.9807853 0.1950903 0 1 0 0.03806024 0.1913417 0.9807853 0.07465791 0.3753303 0.9238795 0.1083864 0.5448951 0.8314696 0.1379497 0.6935199 0.7071068 0.1622117 0.8154932 0.5555702 0.18024 0.9061274 0.3826834 0.1913418 0.9619397 0.1950903 0.1950904 0.9807853 0 0.07465791 0.1802399 0.9807853 0.1464467 0.3535534 0.9238795 0.2126076 0.5132799 0.8314696 0.2705982 0.6532814 0.7071068 0.3181897 0.7681777 0.5555702 0.3535535 0.8535533 0.3826834 0.3753304 0.9061273 0.1950903 0.3826835 0.9238795 0 0.1083865 0.1622116 0.9807853 0.2126077 0.3181896 0.9238795 0.3086584 0.4619397 0.8314696 0.3928477 0.5879377 0.7071068 0.4619399 0.6913416 0.5555702 0.5132801 0.7681776 0.3826834 0.5448952 0.815493 0.1950903 0.5555704 0.8314695 0 0.1379499 0.1379496 0.9807853 0.2705983 0.2705979 0.9238795 0.3928477 0.3928474 0.8314696 0.5000002 0.4999999 0.7071068 0.587938 0.5879377 0.5555702 0.6532816 0.6532813 0.3826834 0.6935201 0.6935197 0.1950903 0.707107 0.7071066 0 0.1622119 0.1083862 0.9807853 0.3181899 0.2126074 0.9238795 0.46194 0.3086581 0.8314696 0.587938 0.3928473 0.7071068 0.6913419 0.4619396 0.5555702 0.7681779 0.5132798 0.3826834 0.8154933 0.5448948 0.1950903 0.8314698 0.55557 0 0.1802402 0.07465761 0.9807853 0.3535537 0.1464464 0.9238795 0.5132802 0.2126073 0.8314696 0.6532817 0.2705978 0.7071068 0.768178 0.3181894 0.5555702 0.8535535 0.3535532 0.3826834 0.9061275 0.3753299 0.1950903 0.9238798 0.3826832 0 0.191342 0.03805994 0.9807853 0.3753306 0.07465755 0.9238795 0.5448954 0.1083861 0.8314696 0.6935201 0.1379494 0.7071068 0.8154934 0.1622114 0.5555702 0.9061276 0.1802397 0.3826834 0.9619398 0.1913413 0.1950903 0.9807855 0.1950899 0 0.1950906 -3.26636e-7 0.9807853 0.3826837 -3.19185e-7 0.9238795 0.5555705 -3.11735e-7 0.8314696 0.707107 -3.19185e-7 0.7071068 0.8314698 -3.34087e-7 0.5555702 0.9238797 -2.74482e-7 0.3826834 0.9807853 -3.93691e-7 0.1950903 1 -3.7879e-7 0 0.1913419 -0.0380606 0.9807853 0.3753305 -0.07465821 0.9238795 0.5448954 -0.1083867 0.8314696 0.6935201 -0.13795 0.7071068 0.8154933 -0.162212 0.5555702 0.9061276 -0.1802402 0.3826834 0.9619397 -0.1913421 0.1950903 0.9807855 -0.1950907 0 0.1802402 -0.07465827 0.9807853 0.3535536 -0.146447 0.9238795 0.5132802 -0.2126079 0.8314696 0.6532816 -0.2705984 0.7071068 0.7681778 -0.31819 0.5555702 0.8535535 -0.3535537 0.3826834 0.9061273 -0.3753306 0.1950903 0.9238797 -0.3826839 0 0.1622118 -0.1083868 0.9807853 0.3181899 -0.2126079 0.9238795 0.4619399 -0.3086587 0.8314696 0.587938 -0.3928478 0.7071068 0.6913418 -0.4619402 0.5555702 0.7681779 -0.5132803 0.3826834 0.8154931 -0.5448954 0.1950903 0.8314697 -0.5555707 0 0.1379498 -0.1379502 0.9807853 0.2705982 -0.2705985 0.9238795 0.3928476 -0.3928479 0.8314696 0.5000001 -0.5000004 0.7071068 0.5879378 -0.5879382 0.5555702 0.6532816 -0.6532818 0.3826834 0.6935198 -0.6935202 0.1950903 0.7071068 -0.7071073 0 0.1083865 -0.1622121 0.9807853 0.2126076 -0.3181901 0.9238795 0.3086584 -0.4619402 0.8314696 0.3928475 -0.5879382 0.7071068 0.4619397 -0.6913421 0.5555702 0.5132801 -0.7681781 0.3826834 0.544895 -0.8154934 0.1950903 0.5555703 -0.8314701 0 0.07465791 -0.1802405 0.9807853 0.1464467 -0.3535538 0.9238795 0.2126076 -0.5132804 0.8314696 0.270598 -0.6532818 0.7071068 0.3181896 -0.7681781 0.5555702 0.3535535 -0.8535537 0.3826834 0.3753302 -0.9061276 0.1950903 0.3826834 -0.92388 0 0.03806024 -0.1913422 0.9807853 0.07465785 -0.3753307 0.9238795 0.1083864 -0.5448955 0.8314696 0.1379497 -0.6935203 0.7071068 0.1622115 -0.8154934 0.5555702 0.18024 -0.9061278 0.3826834 0.1913416 -0.9619399 0.1950903 0.1950902 -0.9807857 0 0 -0.1950908 0.9807853 0 -0.3826838 0.9238795 0 -0.5555707 0.8314696 0 -0.7071071 0.7071068 0 -0.8314697 0.5555702 0 -0.9238799 0.3826834 0 -0.9807854 0.1950903 0 -1 0 -0.03806024 -0.1913422 0.9807853 -0.07465779 -0.3753306 0.9238795 -0.1083863 -0.5448955 0.8314696 -0.1379497 -0.6935202 0.7071068 -0.1622117 -0.8154932 0.5555702 -0.1802399 -0.9061278 0.3826834 -0.1913417 -0.9619398 0.1950903 -0.1950904 -0.9807856 0 -0.07465791 -0.1802404 0.9807853 -0.1464466 -0.3535537 0.9238795 -0.2126075 -0.5132804 0.8314696 -0.2705981 -0.6532818 0.7071068 -0.3181896 -0.7681778 0.5555702 -0.3535533 -0.8535537 0.3826834 -0.3753303 -0.9061275 0.1950903 -0.3826836 -0.9238798 0 -0.1083865 -0.1622121 0.9807853 -0.2126075 -0.31819 0.9238795 -0.3086583 -0.4619402 0.8314696 -0.3928475 -0.5879381 0.7071068 -0.4619397 -0.6913417 0.5555702 -0.5132799 -0.7681781 0.3826834 -0.5448951 -0.8154932 0.1950903 -0.5555704 -0.8314698 0 -2.30405e-7 -5.56246e-7 1 -0.1379498 -0.1379501 0.9807853 -0.2705981 -0.2705984 0.9238795 -0.3928475 -0.3928478 0.8314696 -0.5 -0.5000002 0.7071068 -0.5879377 -0.5879378 0.5555702 -0.6532814 -0.6532818 0.3826834 -0.6935198 -0.6935199 0.1950903 -0.7071069 -0.707107 0 -0.1622118 -0.1083868 0.9807853 -0.3181896 -0.2126078 0.9238795 -0.4619398 -0.3086586 0.8314696 -0.5879378 -0.3928477 0.7071068 -0.6913415 -0.4619398 0.5555702 -0.7681777 -0.5132803 0.3826834 -0.8154929 -0.5448951 0.1950903 -0.8314697 -0.5555704 0 -0.18024 -0.07465821 0.9807853 -0.3535534 -0.1464468 0.9238795 -0.51328 -0.2126078 0.8314696 -0.6532815 -0.2705982 0.7071068 -0.7681775 -0.3181897 0.5555702 -0.8535534 -0.3535537 0.3826834 -0.9061272 -0.3753302 0.1950903 -0.9238795 -0.3826835 0 -0.1913418 -0.03806054 0.9807853 -0.3753302 -0.07465809 0.9238795 -0.5448951 -0.1083866 0.8314696 -0.6935199 -0.1379498 0.7071068 -0.8154928 -0.1622117 0.5555702 -0.9061274 -0.1802402 0.3826834 -0.9619394 -0.1913417 0.1950903 -0.9807852 -0.1950904 0 -0.1950904 -3.11735e-7 0.9807853 -0.3826833 -2.81932e-7 0.9238795 -0.5555702 -2.81932e-7 0.8314696 -0.7071067 -1.85075e-7 0.7071068 -0.8314692 -1.40371e-7 0.5555702 -0.9238795 -3.19185e-7 0.3826834 -0.9807848 0 0.1950903 -0.9999998 -1.40371e-7 0 -0.1913418 0.03805994 0.9807853 -0.3753302 0.07465749 0.9238795 -0.5448951 0.108386 0.8314696 -0.6935198 0.1379495 0.7071068 -0.8154927 0.1622114 0.5555702 -0.9061273 0.1802396 0.3826834 -0.9619392 0.1913415 0.1950903 -0.980785 0.1950901 0 -0.18024 0.07465755 0.9807853 -0.3535533 0.1464463 0.9238795 -0.5132799 0.2126072 0.8314696 -0.6532813 0.2705978 0.7071068 -0.7681773 0.3181893 0.5555702 -0.8535533 0.3535531 0.3826834 -0.9061269 0.37533 0.1950903 -0.9238792 0.3826832 0 -0.1622117 0.1083861 0.9807853 -0.3181896 0.2126072 0.9238795 -0.4619396 0.308658 0.8314696 -0.5879377 0.3928472 0.7071068 -0.6913412 0.4619394 0.5555702 -0.7681776 0.5132796 0.3826834 -0.8154926 0.5448947 0.1950903 -0.8314692 0.55557 0 -0.1379497 0.1379494 0.9807853 -0.2705979 0.2705977 0.9238795 -0.3928473 0.3928471 0.8314696 -0.4999998 0.4999997 0.7071068 -0.5879373 0.5879374 0.5555702 -0.6532814 0.6532811 0.3826834 -0.6935194 0.6935194 0.1950903 -0.7071064 0.7071064 0 -0.1083864 0.1622114 0.9807853 -0.2126074 0.3181893 0.9238795 -0.3086581 0.4619394 0.8314696 -0.3928473 0.5879375 0.7071068 -0.4619393 0.6913412 0.5555702 -0.5132799 0.7681773 0.3826834 -0.5448946 0.8154925 0.1950903 -0.5555698 0.8314691 0 -0.07465785 0.1802397 0.9807853 -0.1464465 0.353553 0.9238795 -0.2126073 0.5132796 0.8314696 -0.2705979 0.6532812 0.7071068 -0.3181892 0.7681771 0.5555702 -0.3535533 0.8535529 0.3826834 -0.3753298 0.9061266 0.1950903 -0.382683 0.9238789 0 -0.03806018 0.1913415 0.9807853 -0.07465773 0.3753299 0.9238795 -0.1083862 0.5448946 0.8314696 -0.1379495 0.6935195 0.7071068 -0.1622113 0.8154924 0.5555702 -0.1802399 0.906127 0.3826834 -0.1913413 0.9619389 0.1950903 -0.1950899 0.9807845 0 + 0 0.1950903 0.9807853 0 + 0.3826835 0.9238795 0 0.5555703 0.8314696 0 0.7071068 0.7071068 0 0.8314697 0.5555702 0 + 0.9238795 0.3826834 0 0.9807853 0.1950903 0 1 0 0.03806024 0.1913417 0.9807853 + 0.07465791 0.3753303 0.9238795 0.1083864 0.5448951 0.8314696 0.1379497 0.6935199 + 0.7071068 0.1622117 0.8154932 0.5555702 0.18024 0.9061274 0.3826834 0.1913418 0.9619397 + 0.1950903 0.1950904 0.9807853 0 0.07465791 0.1802399 0.9807853 0.1464467 0.3535534 + 0.9238795 0.2126076 0.5132799 0.8314696 0.2705982 0.6532814 0.7071068 0.3181897 + 0.7681777 0.5555702 0.3535535 0.8535533 0.3826834 0.3753304 0.9061273 0.1950903 + 0.3826835 0.9238795 0 0.1083865 0.1622116 0.9807853 0.2126077 0.3181896 0.9238795 + 0.3086584 0.4619397 0.8314696 0.3928477 0.5879377 0.7071068 0.4619399 0.6913416 + 0.5555702 0.5132801 0.7681776 0.3826834 0.5448952 0.815493 0.1950903 0.5555704 0.8314695 + 0 0.1379499 0.1379496 0.9807853 0.2705983 0.2705979 0.9238795 0.3928477 0.3928474 + 0.8314696 0.5000002 0.4999999 0.7071068 0.587938 0.5879377 0.5555702 0.6532816 0.6532813 + 0.3826834 0.6935201 0.6935197 0.1950903 0.707107 0.7071066 0 0.1622119 0.1083862 + 0.9807853 0.3181899 0.2126074 0.9238795 0.46194 0.3086581 0.8314696 0.587938 0.3928473 + 0.7071068 0.6913419 0.4619396 0.5555702 0.7681779 0.5132798 0.3826834 0.8154933 + 0.5448948 0.1950903 0.8314698 0.55557 0 0.1802402 0.07465761 0.9807853 0.3535537 + 0.1464464 0.9238795 0.5132802 0.2126073 0.8314696 0.6532817 0.2705978 0.7071068 0.768178 + 0.3181894 0.5555702 0.8535535 0.3535532 0.3826834 0.9061275 0.3753299 0.1950903 + 0.9238798 0.3826832 0 0.191342 0.03805994 0.9807853 0.3753306 0.07465755 0.9238795 + 0.5448954 0.1083861 0.8314696 0.6935201 0.1379494 0.7071068 0.8154934 0.1622114 + 0.5555702 0.9061276 0.1802397 0.3826834 0.9619398 0.1913413 0.1950903 0.9807855 + 0.1950899 0 0.1950906 -3.26636e-7 0.9807853 0.3826837 -3.19185e-7 0.9238795 0.5555705 + -3.11735e-7 0.8314696 0.707107 -3.19185e-7 0.7071068 0.8314698 -3.34087e-7 0.5555702 + 0.9238797 -2.74482e-7 0.3826834 0.9807853 -3.93691e-7 0.1950903 1 -3.7879e-7 0 0.1913419 + -0.0380606 0.9807853 0.3753305 -0.07465821 0.9238795 0.5448954 -0.1083867 0.8314696 + 0.6935201 -0.13795 0.7071068 0.8154933 -0.162212 0.5555702 0.9061276 -0.1802402 + 0.3826834 0.9619397 -0.1913421 0.1950903 0.9807855 -0.1950907 0 0.1802402 -0.07465827 + 0.9807853 0.3535536 -0.146447 0.9238795 0.5132802 -0.2126079 0.8314696 0.6532816 + -0.2705984 0.7071068 0.7681778 -0.31819 0.5555702 0.8535535 -0.3535537 0.3826834 + 0.9061273 -0.3753306 0.1950903 0.9238797 -0.3826839 0 0.1622118 -0.1083868 0.9807853 + 0.3181899 -0.2126079 0.9238795 0.4619399 -0.3086587 0.8314696 0.587938 -0.3928478 + 0.7071068 0.6913418 -0.4619402 0.5555702 0.7681779 -0.5132803 0.3826834 0.8154931 + -0.5448954 0.1950903 0.8314697 -0.5555707 0 0.1379498 -0.1379502 0.9807853 0.2705982 + -0.2705985 0.9238795 0.3928476 -0.3928479 0.8314696 0.5000001 -0.5000004 0.7071068 + 0.5879378 -0.5879382 0.5555702 0.6532816 -0.6532818 0.3826834 0.6935198 -0.6935202 + 0.1950903 0.7071068 -0.7071073 0 0.1083865 -0.1622121 0.9807853 0.2126076 -0.3181901 + 0.9238795 0.3086584 -0.4619402 0.8314696 0.3928475 -0.5879382 0.7071068 0.4619397 + -0.6913421 0.5555702 0.5132801 -0.7681781 0.3826834 0.544895 -0.8154934 0.1950903 + 0.5555703 -0.8314701 0 0.07465791 -0.1802405 0.9807853 0.1464467 -0.3535538 0.9238795 + 0.2126076 -0.5132804 0.8314696 0.270598 -0.6532818 0.7071068 0.3181896 -0.7681781 + 0.5555702 0.3535535 -0.8535537 0.3826834 0.3753302 -0.9061276 0.1950903 0.3826834 + -0.92388 0 0.03806024 -0.1913422 0.9807853 0.07465785 -0.3753307 0.9238795 0.1083864 + -0.5448955 0.8314696 0.1379497 -0.6935203 0.7071068 0.1622115 -0.8154934 0.5555702 + 0.18024 -0.9061278 0.3826834 0.1913416 -0.9619399 0.1950903 0.1950902 -0.9807857 0 0 + -0.1950908 0.9807853 0 -0.3826838 0.9238795 0 -0.5555707 0.8314696 0 -0.7071071 + 0.7071068 0 -0.8314697 0.5555702 0 -0.9238799 0.3826834 0 -0.9807854 0.1950903 0 -1 0 + -0.03806024 -0.1913422 0.9807853 -0.07465779 -0.3753306 0.9238795 -0.1083863 -0.5448955 + 0.8314696 -0.1379497 -0.6935202 0.7071068 -0.1622117 -0.8154932 0.5555702 -0.1802399 + -0.9061278 0.3826834 -0.1913417 -0.9619398 0.1950903 -0.1950904 -0.9807856 0 -0.07465791 + -0.1802404 0.9807853 -0.1464466 -0.3535537 0.9238795 -0.2126075 -0.5132804 0.8314696 + -0.2705981 -0.6532818 0.7071068 -0.3181896 -0.7681778 0.5555702 -0.3535533 -0.8535537 + 0.3826834 -0.3753303 -0.9061275 0.1950903 -0.3826836 -0.9238798 0 -0.1083865 -0.1622121 + 0.9807853 -0.2126075 -0.31819 0.9238795 -0.3086583 -0.4619402 0.8314696 -0.3928475 + -0.5879381 0.7071068 -0.4619397 -0.6913417 0.5555702 -0.5132799 -0.7681781 0.3826834 + -0.5448951 -0.8154932 0.1950903 -0.5555704 -0.8314698 0 -2.30405e-7 -5.56246e-7 1 + -0.1379498 -0.1379501 0.9807853 -0.2705981 -0.2705984 0.9238795 -0.3928475 -0.3928478 + 0.8314696 -0.5 -0.5000002 0.7071068 -0.5879377 -0.5879378 0.5555702 -0.6532814 + -0.6532818 0.3826834 -0.6935198 -0.6935199 0.1950903 -0.7071069 -0.707107 0 -0.1622118 + -0.1083868 0.9807853 -0.3181896 -0.2126078 0.9238795 -0.4619398 -0.3086586 0.8314696 + -0.5879378 -0.3928477 0.7071068 -0.6913415 -0.4619398 0.5555702 -0.7681777 -0.5132803 + 0.3826834 -0.8154929 -0.5448951 0.1950903 -0.8314697 -0.5555704 0 -0.18024 -0.07465821 + 0.9807853 -0.3535534 -0.1464468 0.9238795 -0.51328 -0.2126078 0.8314696 -0.6532815 + -0.2705982 0.7071068 -0.7681775 -0.3181897 0.5555702 -0.8535534 -0.3535537 0.3826834 + -0.9061272 -0.3753302 0.1950903 -0.9238795 -0.3826835 0 -0.1913418 -0.03806054 0.9807853 + -0.3753302 -0.07465809 0.9238795 -0.5448951 -0.1083866 0.8314696 -0.6935199 -0.1379498 + 0.7071068 -0.8154928 -0.1622117 0.5555702 -0.9061274 -0.1802402 0.3826834 -0.9619394 + -0.1913417 0.1950903 -0.9807852 -0.1950904 0 -0.1950904 -3.11735e-7 0.9807853 -0.3826833 + -2.81932e-7 0.9238795 -0.5555702 -2.81932e-7 0.8314696 -0.7071067 -1.85075e-7 0.7071068 + -0.8314692 -1.40371e-7 0.5555702 -0.9238795 -3.19185e-7 0.3826834 -0.9807848 0 0.1950903 + -0.9999998 -1.40371e-7 0 -0.1913418 0.03805994 0.9807853 -0.3753302 0.07465749 0.9238795 + -0.5448951 0.108386 0.8314696 -0.6935198 0.1379495 0.7071068 -0.8154927 0.1622114 + 0.5555702 -0.9061273 0.1802396 0.3826834 -0.9619392 0.1913415 0.1950903 -0.980785 + 0.1950901 0 -0.18024 0.07465755 0.9807853 -0.3535533 0.1464463 0.9238795 -0.5132799 + 0.2126072 0.8314696 -0.6532813 0.2705978 0.7071068 -0.7681773 0.3181893 0.5555702 + -0.8535533 0.3535531 0.3826834 -0.9061269 0.37533 0.1950903 -0.9238792 0.3826832 0 + -0.1622117 0.1083861 0.9807853 -0.3181896 0.2126072 0.9238795 -0.4619396 0.308658 + 0.8314696 -0.5879377 0.3928472 0.7071068 -0.6913412 0.4619394 0.5555702 -0.7681776 + 0.5132796 0.3826834 -0.8154926 0.5448947 0.1950903 -0.8314692 0.55557 0 -0.1379497 + 0.1379494 0.9807853 -0.2705979 0.2705977 0.9238795 -0.3928473 0.3928471 0.8314696 + -0.4999998 0.4999997 0.7071068 -0.5879373 0.5879374 0.5555702 -0.6532814 0.6532811 + 0.3826834 -0.6935194 0.6935194 0.1950903 -0.7071064 0.7071064 0 -0.1083864 0.1622114 + 0.9807853 -0.2126074 0.3181893 0.9238795 -0.3086581 0.4619394 0.8314696 -0.3928473 + 0.5879375 0.7071068 -0.4619393 0.6913412 0.5555702 -0.5132799 0.7681773 0.3826834 + -0.5448946 0.8154925 0.1950903 -0.5555698 0.8314691 0 -0.07465785 0.1802397 0.9807853 + -0.1464465 0.353553 0.9238795 -0.2126073 0.5132796 0.8314696 -0.2705979 0.6532812 + 0.7071068 -0.3181892 0.7681771 0.5555702 -0.3535533 0.8535529 0.3826834 -0.3753298 + 0.9061266 0.1950903 -0.382683 0.9238789 0 -0.03806018 0.1913415 0.9807853 -0.07465773 + 0.3753299 0.9238795 -0.1083862 0.5448946 0.8314696 -0.1379495 0.6935195 0.7071068 + -0.1622113 0.8154924 0.5555702 -0.1802399 0.906127 0.3826834 -0.1913413 0.9619389 + 0.1950903 -0.1950899 0.9807845 0 - - - + + + - 0.04637986 0.4708896 0.8809722 0.06236076 0.6331587 0.771506 0.07591533 0.7707796 0.6325629 0.08653593 0.8786131 0.4696282 0.09383469 0.9527183 0.2890035 0.09754973 0.9904384 0.09754937 0.009653806 0.09801238 0.9951384 0.02858 0.2901661 0.9565495 0.08463895 0.2790152 0.9565495 0.1373535 0.4527934 0.8809724 0.1846856 0.6088265 0.7715061 0.2248284 0.7411591 0.6325626 0.2562822 0.8448484 0.4696283 0.2778978 0.9161058 0.2890036 0.2889004 0.9523764 0.09754937 0.02858608 0.09424585 0.9951385 0.4161794 0.7786167 0.4696286 0.4512816 0.8442877 0.2890042 0.4691486 0.8777151 0.09754943 0.04642796 0.08685743 0.9951384 0.1374451 0.2571418 0.9565495 0.2230501 0.4172968 0.8809722 0.2999128 0.561098 0.771506 0.365101 0.6830564 0.6325624 0.3001745 0.365764 0.8809722 0.4036152 0.4918062 0.7715061 0.4913436 0.598704 0.6325624 0.5600834 0.6824632 0.4696283 0.6073225 0.7400246 0.2890037 0.6313674 0.7693239 0.09755063 0.06247645 0.07613122 0.9951385 0.1849697 0.2253866 0.9565497 0.740025 0.6073222 0.2890034 0.7693238 0.6313676 0.09755009 0.07613044 0.06247919 0.9951384 0.2253861 0.1849701 0.9565497 0.3657639 0.3001743 0.8809723 0.4918063 0.4036149 0.771506 0.5987038 0.4913436 0.6325625 0.6824635 0.5600829 0.4696285 0.4172973 0.2230497 0.8809722 0.5610976 0.2999133 0.7715061 0.6830562 0.3651013 0.6325624 0.7786169 0.4161792 0.4696285 0.8442885 0.4512808 0.2890033 0.8777153 0.469148 0.09755015 0.08685672 0.04642623 0.9951384 0.257142 0.137445 0.9565495 0.9161059 0.2778976 0.2890034 0.9523763 0.2889007 0.09755045 0.09424793 0.02858912 0.9951382 0.2790162 0.08463817 0.9565493 0.452794 0.1373533 0.880972 0.6088266 0.1846855 0.7715061 0.7411592 0.224828 0.6325626 0.8448486 0.2562817 0.4696282 0.6331589 0.06236016 0.7715058 0.7707801 0.07591527 0.6325623 0.8786131 0.08653587 0.4696283 0.9527184 0.09383487 0.289003 0.9904384 0.09754937 0.09755051 0.09801143 0.009653329 0.9951385 0.2901666 0.02857875 0.9565494 0.4708901 0.04637849 0.880972 0.9904384 -0.09754937 0.09755104 0.09801346 -0.009653329 0.9951383 0.2901666 -0.02857875 0.9565494 0.47089 -0.04637879 0.880972 0.6331583 -0.06236076 0.7715061 0.7707798 -0.07591575 0.6325626 0.8786131 -0.08653497 0.4696283 0.9527184 -0.09383487 0.289003 0.6088271 -0.1846855 0.7715055 0.7411592 -0.2248284 0.6325625 0.8448485 -0.2562817 0.4696285 0.9161058 -0.2778984 0.2890028 0.9523763 -0.2889 0.0975511 0.09424406 -0.02858924 0.9951385 0.2790144 -0.08463835 0.9565498 0.4527933 -0.1373533 0.8809724 0.8777145 -0.4691494 0.0975511 0.0868569 -0.04642635 0.9951385 0.2571407 -0.1374451 0.9565498 0.4172974 -0.2230497 0.880972 0.5610983 -0.2999133 0.7715056 0.6830563 -0.3651016 0.6325623 0.7786166 -0.4161793 0.4696288 0.8442879 -0.4512817 0.289003 0.5987036 -0.4913441 0.6325623 0.6824634 -0.5600832 0.4696282 0.7400251 -0.607322 0.2890031 0.7693233 -0.6313681 0.09755057 0.07613265 -0.06247937 0.9951383 0.2253877 -0.18497 0.9565494 0.365764 -0.3001744 0.8809723 0.4918063 -0.4036151 0.771506 0.1849695 -0.225387 0.9565496 0.3001742 -0.3657639 0.8809723 0.4036148 -0.4918068 0.7715058 0.4913434 -0.5987043 0.6325621 0.5600831 -0.6824632 0.4696285 0.6073222 -0.7400249 0.2890034 0.6313679 -0.7693234 0.0975511 0.06248062 -0.0761314 0.9951383 0.4161789 -0.7786167 0.4696289 0.4512811 -0.8442882 0.289003 0.4691482 -0.8777149 0.09755176 0.04642415 -0.08685773 0.9951385 0.1374447 -0.257142 0.9565495 0.2230501 -0.4172968 0.8809723 0.2999125 -0.561098 0.7715061 0.3651013 -0.6830566 0.6325621 0.08463925 -0.2790152 0.9565494 0.1373533 -0.4527933 0.8809724 0.1846857 -0.6088271 0.7715055 0.2248279 -0.7411596 0.6325623 0.2562819 -0.8448482 0.469629 0.2778977 -0.9161062 0.2890022 0.2889001 -0.9523763 0.09755158 0.0285902 -0.09424608 0.9951384 0.0865361 -0.8786131 0.4696283 0.09383416 -0.9527184 0.2890032 0.0975492 -0.9904384 0.09755092 0.009653866 -0.09801268 0.9951384 0.02857887 -0.2901663 0.9565494 0.0463792 -0.4708895 0.8809723 0.0623607 -0.6331586 0.7715058 0.07591485 -0.7707799 0.6325625 -0.04637777 -0.4708893 0.8809724 -0.06236076 -0.6331591 0.7715055 -0.07591539 -0.7707806 0.6325616 -0.08653587 -0.8786127 0.4696289 -0.09383493 -0.9527185 0.2890029 -0.09754973 -0.9904382 0.09755116 -0.009653866 -0.09801274 0.9951384 -0.02857947 -0.2901663 0.9565494 -0.277898 -0.9161062 0.2890021 -0.2889004 -0.9523761 0.09755116 -0.0285902 -0.09424614 0.9951384 -0.08463984 -0.2790154 0.9565494 -0.137354 -0.4527934 0.8809723 -0.1846857 -0.6088269 0.7715057 -0.2248286 -0.7411596 0.632562 -0.2562816 -0.8448475 0.4696304 -0.2230499 -0.4172965 0.8809725 -0.2999136 -0.5610982 0.7715055 -0.3651016 -0.6830568 0.6325616 -0.4161789 -0.778616 0.46963 -0.4512817 -0.8442883 0.2890023 -0.4691487 -0.8777148 0.09755116 -0.04642421 -0.08685779 0.9951385 -0.1374469 -0.257142 0.9565492 -0.6073231 -0.7400245 0.2890027 -0.6313679 -0.7693233 0.09755134 -0.06248074 -0.07613146 0.9951383 -0.1849701 -0.2253868 0.9565495 -0.3001742 -0.3657639 0.8809724 -0.4036154 -0.4918069 0.7715054 -0.4913445 -0.5987039 0.6325617 -0.5600831 -0.6824624 0.4696298 -0.4918069 -0.4036148 0.7715058 -0.5987043 -0.4913439 0.6325618 -0.6824625 -0.5600829 0.4696298 -0.7400251 -0.6073225 0.2890022 -0.7693237 -0.6313675 0.09755134 -0.07613283 -0.06247949 0.9951383 -0.225387 -0.18497 0.9565495 -0.3657642 -0.3001743 0.8809722 -0.8777152 -0.469148 0.09755134 -0.08685719 -0.04642641 0.9951384 -0.2571429 -0.1374452 0.9565492 -0.4172966 -0.2230497 0.8809725 -0.5610979 -0.299913 0.771506 -0.6830569 -0.3651016 0.6325616 -0.7786158 -0.4161798 0.4696296 -0.8442887 -0.4512811 0.289002 -0.74116 -0.2248283 0.6325616 -0.8448477 -0.2562815 0.4696298 -0.9161063 -0.2778978 0.2890019 -0.9523763 -0.2889 0.09755116 -0.09424436 -0.02858924 0.9951385 -0.2790158 -0.08463823 0.9565494 -0.4527938 -0.1373533 0.8809721 -0.6088269 -0.1846851 0.771506 -0.09801387 -0.009653329 0.9951383 -0.290166 -0.02857857 0.9565496 -0.4708895 -0.04637813 0.8809723 -0.6331586 -0.06236076 0.771506 -0.7707808 -0.07591491 0.6325615 -0.8786123 -0.08653575 0.4696296 -0.9527187 -0.09383416 0.2890021 -0.9904382 -0.09754937 0.0975511 -0.7707805 0.07591491 0.6325618 -0.8786124 0.08653581 0.4696297 -0.9527187 0.09383493 0.289002 -0.9904381 0.09755092 0.09755098 -0.09801185 0.009653389 0.9951384 -0.2901661 0.02857881 0.9565495 -0.4708896 0.04637813 0.8809722 -0.6331588 0.0623607 0.7715058 -0.2790157 0.08463841 0.9565493 -0.4527945 0.1373535 0.8809717 -0.6088265 0.1846861 0.7715059 -0.7411597 0.2248292 0.6325616 -0.8448476 0.2562823 0.4696297 -0.9161064 0.2778979 0.2890017 -0.9523761 0.2889008 0.09755104 -0.09424829 0.02858918 0.9951382 -0.778616 0.416179 0.4696298 -0.8442882 0.451282 0.289002 -0.8777145 0.4691495 0.0975511 -0.08685904 0.04642641 0.9951383 -0.2571416 0.1374453 0.9565496 -0.4172968 0.2230498 0.8809723 -0.5610981 0.2999132 0.7715058 -0.683057 0.3651017 0.6325615 -0.2253866 0.1849703 0.9565495 -0.3657648 0.3001745 0.8809719 -0.4918059 0.4036149 0.7715064 -0.5987043 0.4913443 0.6325615 -0.6824627 0.560083 0.4696293 -0.7400249 0.6073231 0.2890014 -0.7693235 0.6313678 0.09755098 -0.07612872 0.06247943 0.9951385 -0.5600827 0.6824627 0.4696298 -0.6073222 0.7400256 0.2890014 -0.6313672 0.769324 0.09755092 -0.06247669 0.0761314 0.9951385 -0.1849693 0.2253871 0.9565497 -0.3001746 0.3657637 0.8809723 -0.4036149 0.4918067 0.7715058 -0.4913438 0.5987046 0.6325616 -0.2230502 0.4172969 0.8809723 -0.2999128 0.5610979 0.7715061 -0.3651013 0.6830574 0.6325612 -0.416179 0.7786161 0.4696297 -0.4512813 0.8442888 0.2890011 -0.469148 0.8777153 0.09755098 -0.04642808 0.08685761 0.9951384 -0.1374455 0.2571422 0.9565494 -0.2778977 0.9161065 0.2890016 -0.2888997 0.9523765 0.09755098 -0.0285862 0.09424602 0.9951385 -0.0846371 0.2790156 0.9565495 -0.1373532 0.4527937 0.8809723 -0.1846854 0.6088266 0.7715061 -0.2248284 0.7411602 0.6325613 -0.2562817 0.8448474 0.4696303 -0.06236243 0.6331585 0.7715058 -0.07591867 0.7707794 0.6325626 -0.08653783 0.8786131 0.4696277 -0.09383904 0.9527177 0.289004 -0.09755355 0.990438 0.09754955 -0.009653866 0.09801244 0.9951384 -0.02858209 0.290166 0.9565494 -0.04638135 0.4708896 0.880972 0.04637861 0.4708893 0.8809724 0.06236058 0.6331583 0.7715063 0.07591521 0.7707799 0.6325625 0.08653575 0.8786131 0.4696281 0.09383463 0.9527181 0.2890042 0.09754979 0.9904383 0.09755021 0.02858078 0.2901661 0.9565494 0.08463555 0.2790151 0.9565498 0.1373534 0.4527937 0.8809723 0.1846861 0.608827 0.7715055 0.2248287 0.7411589 0.6325628 0.2562823 0.8448484 0.4696283 0.2778978 0.9161058 0.2890037 0.2889003 0.9523763 0.09755051 0.4161793 0.7786172 0.4696276 0.4512812 0.8442878 0.2890043 0.4691487 0.8777151 0.09754925 0.1374452 0.2571419 0.9565495 0.2230505 0.4172968 0.8809721 0.2999132 0.561098 0.7715057 0.3651012 0.6830558 0.632563 0.3001739 0.3657637 0.8809726 0.4036151 0.4918067 0.7715058 0.4913435 0.5987038 0.6325626 0.5600831 0.6824635 0.4696282 0.6073224 0.7400247 0.2890036 0.631368 0.7693235 0.09754973 0.1849746 0.2253867 0.9565486 0.7400244 0.6073226 0.2890036 0.7693239 0.6313673 0.09755045 0.225385 0.1849702 0.9565499 0.3657641 0.3001751 0.8809719 0.4918069 0.4036149 0.7715057 0.598704 0.4913433 0.6325626 0.6824632 0.5600827 0.4696289 0.4172967 0.2230501 0.8809723 0.561098 0.2999126 0.771506 0.6830566 0.3651005 0.6325625 0.7786167 0.4161794 0.4696285 0.8442882 0.4512808 0.2890037 0.8777152 0.4691483 0.09755057 0.2571429 0.1374452 0.9565493 0.9161057 0.277898 0.2890035 0.9523764 0.2888998 0.09755057 0.279015 0.08463805 0.9565497 0.4527932 0.1373529 0.8809726 0.6088266 0.1846854 0.771506 0.7411593 0.2248277 0.6325626 0.8448486 0.2562817 0.4696282 0.6331588 0.06236135 0.7715057 0.7707797 0.07591521 0.6325626 0.878613 0.08653551 0.4696285 0.9527184 0.0938338 0.2890036 0.9904382 0.09754925 0.09755104 0.2901659 0.02857887 0.9565495 0.470889 0.04637873 0.8809726 0.9904382 -0.09755009 0.0975511 0.2901659 -0.02857887 0.9565497 0.4708888 -0.04637879 0.8809726 0.6331588 -0.06236064 0.7715058 0.77078 -0.07591468 0.6325624 0.8786128 -0.08653646 0.4696285 0.9527184 -0.09383463 0.2890031 0.6088263 -0.1846854 0.7715062 0.7411594 -0.2248283 0.6325622 0.844848 -0.2562825 0.4696287 0.9161061 -0.2778972 0.2890032 0.9523762 -0.2889006 0.09755104 0.2790152 -0.08463889 0.9565494 0.4527939 -0.1373534 0.880972 0.8777153 -0.4691479 0.09755104 0.2571449 -0.1374453 0.9565486 0.4172965 -0.2230502 0.8809723 0.5610979 -0.2999134 0.7715058 0.6830564 -0.3651012 0.6325623 0.7786166 -0.4161794 0.4696286 0.8442881 -0.4512817 0.2890028 0.5987038 -0.4913435 0.6325626 0.6824631 -0.5600827 0.4696292 0.7400249 -0.6073223 0.289003 0.7693237 -0.6313675 0.09755128 0.2253849 -0.1849703 0.9565498 0.3657631 -0.3001748 0.8809725 0.4918063 -0.4036154 0.771506 0.1849706 -0.2253867 0.9565495 0.300174 -0.3657643 0.8809723 0.4036158 -0.491806 0.7715058 0.4913434 -0.5987036 0.6325628 0.5600828 -0.682463 0.4696292 0.6073225 -0.7400249 0.2890028 0.6313673 -0.7693238 0.09755045 0.4161788 -0.7786167 0.4696289 0.4512813 -0.8442882 0.2890029 0.4691479 -0.8777154 0.09755003 0.1374454 -0.257142 0.9565494 0.2230502 -0.417297 0.8809721 0.2999135 -0.5610982 0.7715055 0.3651001 -0.6830567 0.6325627 0.08464163 -0.2790152 0.9565492 0.1373523 -0.4527939 0.8809723 0.1846855 -0.6088272 0.7715054 0.2248284 -0.7411593 0.6325623 0.2562809 -0.8448483 0.4696292 0.2778975 -0.9161058 0.2890037 0.2889001 -0.9523763 0.0975517 0.08653527 -0.8786126 0.4696293 0.09383463 -0.9527182 0.2890037 0.09754925 -0.9904384 0.09755086 0.02857589 -0.2901663 0.9565495 0.04637771 -0.4708893 0.8809725 0.06236064 -0.6331588 0.7715058 0.07591474 -0.7707805 0.6325618 -0.04637771 -0.4708893 0.8809725 -0.0623607 -0.6331591 0.7715055 -0.07591521 -0.7707805 0.6325618 -0.08653593 -0.8786123 0.4696297 -0.09383457 -0.9527183 0.2890036 -0.09754991 -0.9904382 0.09755086 -0.02857589 -0.2901661 0.9565497 -0.2778976 -0.9161061 0.289003 -0.2889004 -0.9523761 0.09755164 -0.0846377 -0.2790153 0.9565495 -0.1373534 -0.4527934 0.8809723 -0.1846855 -0.6088272 0.7715054 -0.2248284 -0.7411594 0.6325622 -0.2562825 -0.8448479 0.4696289 -0.2230505 -0.4172965 0.8809723 -0.2999135 -0.561098 0.7715057 -0.3651016 -0.6830573 0.6325613 -0.4161792 -0.7786161 0.4696294 -0.4512816 -0.8442881 0.2890028 -0.4691484 -0.8777149 0.09755164 -0.1374453 -0.2571419 0.9565494 -0.6073229 -0.7400245 0.289003 -0.6313679 -0.7693235 0.09755128 -0.1849709 -0.2253872 0.9565493 -0.3001736 -0.3657632 0.8809729 -0.4036148 -0.4918066 0.771506 -0.491344 -0.5987045 0.6325615 -0.5600828 -0.6824631 0.4696291 -0.4918063 -0.403615 0.771506 -0.5987042 -0.4913439 0.6325618 -0.6824632 -0.5600821 0.4696297 -0.7400246 -0.607323 0.2890025 -0.7693238 -0.6313674 0.09755128 -0.2253852 -0.1849704 0.9565498 -0.3657638 -0.3001744 0.8809723 -0.8777153 -0.4691479 0.09755104 -0.2571416 -0.1374451 0.9565495 -0.4172967 -0.2230491 0.8809726 -0.5610983 -0.2999133 0.7715055 -0.6830567 -0.3651013 0.6325619 -0.7786164 -0.4161783 0.46963 -0.8442882 -0.4512817 0.2890025 -0.7411601 -0.224828 0.6325615 -0.8448476 -0.2562816 0.46963 -0.9161062 -0.2778974 0.2890025 -0.9523764 -0.2889 0.09755122 -0.2790146 -0.08463877 0.9565496 -0.4527929 -0.1373535 0.8809726 -0.6088262 -0.1846862 0.7715061 -0.2901672 -0.02857887 0.9565492 -0.4708892 -0.04637825 0.8809725 -0.6331586 -0.0623607 0.7715059 -0.7707807 -0.0759148 0.6325616 -0.8786123 -0.08653551 0.4696297 -0.9527187 -0.09383469 0.2890024 -0.9904382 -0.09754931 0.09755104 -0.7707806 0.07591593 0.6325614 -0.8786123 0.08653551 0.4696298 -0.9527186 0.09383553 0.2890024 -0.9904382 0.09754931 0.0975511 -0.2901663 0.0285784 0.9565494 -0.4708888 0.04637879 0.8809727 -0.6331589 0.06236135 0.7715056 -0.2790146 0.08463877 0.9565497 -0.4527921 0.1373531 0.8809731 -0.6088267 0.1846854 0.7715059 -0.74116 0.2248281 0.6325616 -0.8448477 0.2562816 0.4696299 -0.9161063 0.2778974 0.2890023 -0.9523763 0.2889 0.09755116 -0.7786158 0.4161794 0.46963 -0.8442883 0.4512818 0.2890021 -0.8777149 0.4691486 0.0975508 -0.2571424 0.1374455 0.9565494 -0.4172956 0.2230504 0.8809728 -0.5610979 0.2999127 0.771506 -0.6830571 0.3651016 0.6325613 -0.225389 0.1849702 0.956549 -0.3657631 0.3001751 0.8809725 -0.4918058 0.4036151 0.7715062 -0.5987047 0.4913443 0.6325612 -0.6824623 0.5600827 0.4696301 -0.740025 0.6073225 0.2890027 -0.7693235 0.6313679 0.09755086 -0.5600823 0.6824629 0.4696298 -0.6073228 0.7400251 0.2890018 -0.6313672 0.7693241 0.09755092 -0.184971 0.2253869 0.9565493 -0.3001742 0.365764 0.8809723 -0.4036152 0.4918062 0.771506 -0.4913439 0.5987046 0.6325613 -0.2230494 0.4172967 0.8809725 -0.2999129 0.5610979 0.771506 -0.3651017 0.683057 0.6325614 -0.416178 0.7786163 0.4696304 -0.4512816 0.8442884 0.2890022 -0.4691482 0.8777152 0.09755063 -0.1374489 0.257142 0.9565489 -0.2778977 0.9161065 0.2890014 -0.2889 0.9523764 0.09755057 -0.08463776 0.2790156 0.9565494 -0.1373515 0.4527937 0.8809725 -0.1846854 0.6088265 0.7715061 -0.2248284 0.7411606 0.6325609 -0.2562813 0.8448477 0.46963 -0.0623629 0.6331578 0.7715064 -0.07591754 0.7707806 0.6325615 -0.08654028 0.8786118 0.46963 -0.09383684 0.9527184 0.2890021 -0.09755432 0.9904379 0.09755021 -0.02857983 0.2901662 0.9565495 -0.04638212 0.4708889 0.8809724 + 0.04637986 0.4708896 0.8809722 + 0.06236076 0.6331587 0.771506 0.07591533 0.7707796 0.6325629 0.08653593 0.8786131 + 0.4696282 0.09383469 0.9527183 0.2890035 0.09754973 0.9904384 0.09754937 0.009653806 + 0.09801238 0.9951384 0.02858 0.2901661 0.9565495 0.08463895 0.2790152 0.9565495 + 0.1373535 0.4527934 0.8809724 0.1846856 0.6088265 0.7715061 0.2248284 0.7411591 + 0.6325626 0.2562822 0.8448484 0.4696283 0.2778978 0.9161058 0.2890036 0.2889004 + 0.9523764 0.09754937 0.02858608 0.09424585 0.9951385 0.4161794 0.7786167 0.4696286 + 0.4512816 0.8442877 0.2890042 0.4691486 0.8777151 0.09754943 0.04642796 0.08685743 + 0.9951384 0.1374451 0.2571418 0.9565495 0.2230501 0.4172968 0.8809722 0.2999128 0.561098 + 0.771506 0.365101 0.6830564 0.6325624 0.3001745 0.365764 0.8809722 0.4036152 0.4918062 + 0.7715061 0.4913436 0.598704 0.6325624 0.5600834 0.6824632 0.4696283 0.6073225 0.7400246 + 0.2890037 0.6313674 0.7693239 0.09755063 0.06247645 0.07613122 0.9951385 0.1849697 + 0.2253866 0.9565497 0.740025 0.6073222 0.2890034 0.7693238 0.6313676 0.09755009 + 0.07613044 0.06247919 0.9951384 0.2253861 0.1849701 0.9565497 0.3657639 0.3001743 + 0.8809723 0.4918063 0.4036149 0.771506 0.5987038 0.4913436 0.6325625 0.6824635 0.5600829 + 0.4696285 0.4172973 0.2230497 0.8809722 0.5610976 0.2999133 0.7715061 0.6830562 + 0.3651013 0.6325624 0.7786169 0.4161792 0.4696285 0.8442885 0.4512808 0.2890033 + 0.8777153 0.469148 0.09755015 0.08685672 0.04642623 0.9951384 0.257142 0.137445 + 0.9565495 0.9161059 0.2778976 0.2890034 0.9523763 0.2889007 0.09755045 0.09424793 + 0.02858912 0.9951382 0.2790162 0.08463817 0.9565493 0.452794 0.1373533 0.880972 + 0.6088266 0.1846855 0.7715061 0.7411592 0.224828 0.6325626 0.8448486 0.2562817 0.4696282 + 0.6331589 0.06236016 0.7715058 0.7707801 0.07591527 0.6325623 0.8786131 0.08653587 + 0.4696283 0.9527184 0.09383487 0.289003 0.9904384 0.09754937 0.09755051 0.09801143 + 0.009653329 0.9951385 0.2901666 0.02857875 0.9565494 0.4708901 0.04637849 0.880972 + 0.9904384 -0.09754937 0.09755104 0.09801346 -0.009653329 0.9951383 0.2901666 -0.02857875 + 0.9565494 0.47089 -0.04637879 0.880972 0.6331583 -0.06236076 0.7715061 0.7707798 + -0.07591575 0.6325626 0.8786131 -0.08653497 0.4696283 0.9527184 -0.09383487 0.289003 + 0.6088271 -0.1846855 0.7715055 0.7411592 -0.2248284 0.6325625 0.8448485 -0.2562817 + 0.4696285 0.9161058 -0.2778984 0.2890028 0.9523763 -0.2889 0.0975511 0.09424406 + -0.02858924 0.9951385 0.2790144 -0.08463835 0.9565498 0.4527933 -0.1373533 0.8809724 + 0.8777145 -0.4691494 0.0975511 0.0868569 -0.04642635 0.9951385 0.2571407 -0.1374451 + 0.9565498 0.4172974 -0.2230497 0.880972 0.5610983 -0.2999133 0.7715056 0.6830563 + -0.3651016 0.6325623 0.7786166 -0.4161793 0.4696288 0.8442879 -0.4512817 0.289003 + 0.5987036 -0.4913441 0.6325623 0.6824634 -0.5600832 0.4696282 0.7400251 -0.607322 + 0.2890031 0.7693233 -0.6313681 0.09755057 0.07613265 -0.06247937 0.9951383 0.2253877 + -0.18497 0.9565494 0.365764 -0.3001744 0.8809723 0.4918063 -0.4036151 0.771506 0.1849695 + -0.225387 0.9565496 0.3001742 -0.3657639 0.8809723 0.4036148 -0.4918068 0.7715058 + 0.4913434 -0.5987043 0.6325621 0.5600831 -0.6824632 0.4696285 0.6073222 -0.7400249 + 0.2890034 0.6313679 -0.7693234 0.0975511 0.06248062 -0.0761314 0.9951383 0.4161789 + -0.7786167 0.4696289 0.4512811 -0.8442882 0.289003 0.4691482 -0.8777149 0.09755176 + 0.04642415 -0.08685773 0.9951385 0.1374447 -0.257142 0.9565495 0.2230501 -0.4172968 + 0.8809723 0.2999125 -0.561098 0.7715061 0.3651013 -0.6830566 0.6325621 0.08463925 + -0.2790152 0.9565494 0.1373533 -0.4527933 0.8809724 0.1846857 -0.6088271 0.7715055 + 0.2248279 -0.7411596 0.6325623 0.2562819 -0.8448482 0.469629 0.2778977 -0.9161062 + 0.2890022 0.2889001 -0.9523763 0.09755158 0.0285902 -0.09424608 0.9951384 0.0865361 + -0.8786131 0.4696283 0.09383416 -0.9527184 0.2890032 0.0975492 -0.9904384 0.09755092 + 0.009653866 -0.09801268 0.9951384 0.02857887 -0.2901663 0.9565494 0.0463792 -0.4708895 + 0.8809723 0.0623607 -0.6331586 0.7715058 0.07591485 -0.7707799 0.6325625 -0.04637777 + -0.4708893 0.8809724 -0.06236076 -0.6331591 0.7715055 -0.07591539 -0.7707806 0.6325616 + -0.08653587 -0.8786127 0.4696289 -0.09383493 -0.9527185 0.2890029 -0.09754973 -0.9904382 + 0.09755116 -0.009653866 -0.09801274 0.9951384 -0.02857947 -0.2901663 0.9565494 -0.277898 + -0.9161062 0.2890021 -0.2889004 -0.9523761 0.09755116 -0.0285902 -0.09424614 0.9951384 + -0.08463984 -0.2790154 0.9565494 -0.137354 -0.4527934 0.8809723 -0.1846857 -0.6088269 + 0.7715057 -0.2248286 -0.7411596 0.632562 -0.2562816 -0.8448475 0.4696304 -0.2230499 + -0.4172965 0.8809725 -0.2999136 -0.5610982 0.7715055 -0.3651016 -0.6830568 0.6325616 + -0.4161789 -0.778616 0.46963 -0.4512817 -0.8442883 0.2890023 -0.4691487 -0.8777148 + 0.09755116 -0.04642421 -0.08685779 0.9951385 -0.1374469 -0.257142 0.9565492 -0.6073231 + -0.7400245 0.2890027 -0.6313679 -0.7693233 0.09755134 -0.06248074 -0.07613146 0.9951383 + -0.1849701 -0.2253868 0.9565495 -0.3001742 -0.3657639 0.8809724 -0.4036154 -0.4918069 + 0.7715054 -0.4913445 -0.5987039 0.6325617 -0.5600831 -0.6824624 0.4696298 -0.4918069 + -0.4036148 0.7715058 -0.5987043 -0.4913439 0.6325618 -0.6824625 -0.5600829 0.4696298 + -0.7400251 -0.6073225 0.2890022 -0.7693237 -0.6313675 0.09755134 -0.07613283 -0.06247949 + 0.9951383 -0.225387 -0.18497 0.9565495 -0.3657642 -0.3001743 0.8809722 -0.8777152 + -0.469148 0.09755134 -0.08685719 -0.04642641 0.9951384 -0.2571429 -0.1374452 0.9565492 + -0.4172966 -0.2230497 0.8809725 -0.5610979 -0.299913 0.771506 -0.6830569 -0.3651016 + 0.6325616 -0.7786158 -0.4161798 0.4696296 -0.8442887 -0.4512811 0.289002 -0.74116 + -0.2248283 0.6325616 -0.8448477 -0.2562815 0.4696298 -0.9161063 -0.2778978 0.2890019 + -0.9523763 -0.2889 0.09755116 -0.09424436 -0.02858924 0.9951385 -0.2790158 -0.08463823 + 0.9565494 -0.4527938 -0.1373533 0.8809721 -0.6088269 -0.1846851 0.771506 -0.09801387 + -0.009653329 0.9951383 -0.290166 -0.02857857 0.9565496 -0.4708895 -0.04637813 0.8809723 + -0.6331586 -0.06236076 0.771506 -0.7707808 -0.07591491 0.6325615 -0.8786123 -0.08653575 + 0.4696296 -0.9527187 -0.09383416 0.2890021 -0.9904382 -0.09754937 0.0975511 -0.7707805 + 0.07591491 0.6325618 -0.8786124 0.08653581 0.4696297 -0.9527187 0.09383493 0.289002 + -0.9904381 0.09755092 0.09755098 -0.09801185 0.009653389 0.9951384 -0.2901661 0.02857881 + 0.9565495 -0.4708896 0.04637813 0.8809722 -0.6331588 0.0623607 0.7715058 -0.2790157 + 0.08463841 0.9565493 -0.4527945 0.1373535 0.8809717 -0.6088265 0.1846861 0.7715059 + -0.7411597 0.2248292 0.6325616 -0.8448476 0.2562823 0.4696297 -0.9161064 0.2778979 + 0.2890017 -0.9523761 0.2889008 0.09755104 -0.09424829 0.02858918 0.9951382 -0.778616 + 0.416179 0.4696298 -0.8442882 0.451282 0.289002 -0.8777145 0.4691495 0.0975511 + -0.08685904 0.04642641 0.9951383 -0.2571416 0.1374453 0.9565496 -0.4172968 0.2230498 + 0.8809723 -0.5610981 0.2999132 0.7715058 -0.683057 0.3651017 0.6325615 -0.2253866 + 0.1849703 0.9565495 -0.3657648 0.3001745 0.8809719 -0.4918059 0.4036149 0.7715064 + -0.5987043 0.4913443 0.6325615 -0.6824627 0.560083 0.4696293 -0.7400249 0.6073231 + 0.2890014 -0.7693235 0.6313678 0.09755098 -0.07612872 0.06247943 0.9951385 -0.5600827 + 0.6824627 0.4696298 -0.6073222 0.7400256 0.2890014 -0.6313672 0.769324 0.09755092 + -0.06247669 0.0761314 0.9951385 -0.1849693 0.2253871 0.9565497 -0.3001746 0.3657637 + 0.8809723 -0.4036149 0.4918067 0.7715058 -0.4913438 0.5987046 0.6325616 -0.2230502 + 0.4172969 0.8809723 -0.2999128 0.5610979 0.7715061 -0.3651013 0.6830574 0.6325612 + -0.416179 0.7786161 0.4696297 -0.4512813 0.8442888 0.2890011 -0.469148 0.8777153 + 0.09755098 -0.04642808 0.08685761 0.9951384 -0.1374455 0.2571422 0.9565494 -0.2778977 + 0.9161065 0.2890016 -0.2888997 0.9523765 0.09755098 -0.0285862 0.09424602 0.9951385 + -0.0846371 0.2790156 0.9565495 -0.1373532 0.4527937 0.8809723 -0.1846854 0.6088266 + 0.7715061 -0.2248284 0.7411602 0.6325613 -0.2562817 0.8448474 0.4696303 -0.06236243 + 0.6331585 0.7715058 -0.07591867 0.7707794 0.6325626 -0.08653783 0.8786131 0.4696277 + -0.09383904 0.9527177 0.289004 -0.09755355 0.990438 0.09754955 -0.009653866 0.09801244 + 0.9951384 -0.02858209 0.290166 0.9565494 -0.04638135 0.4708896 0.880972 0.04637861 + 0.4708893 0.8809724 0.06236058 0.6331583 0.7715063 0.07591521 0.7707799 0.6325625 + 0.08653575 0.8786131 0.4696281 0.09383463 0.9527181 0.2890042 0.09754979 0.9904383 + 0.09755021 0.02858078 0.2901661 0.9565494 0.08463555 0.2790151 0.9565498 0.1373534 + 0.4527937 0.8809723 0.1846861 0.608827 0.7715055 0.2248287 0.7411589 0.6325628 0.2562823 + 0.8448484 0.4696283 0.2778978 0.9161058 0.2890037 0.2889003 0.9523763 0.09755051 + 0.4161793 0.7786172 0.4696276 0.4512812 0.8442878 0.2890043 0.4691487 0.8777151 + 0.09754925 0.1374452 0.2571419 0.9565495 0.2230505 0.4172968 0.8809721 0.2999132 + 0.561098 0.7715057 0.3651012 0.6830558 0.632563 0.3001739 0.3657637 0.8809726 0.4036151 + 0.4918067 0.7715058 0.4913435 0.5987038 0.6325626 0.5600831 0.6824635 0.4696282 + 0.6073224 0.7400247 0.2890036 0.631368 0.7693235 0.09754973 0.1849746 0.2253867 + 0.9565486 0.7400244 0.6073226 0.2890036 0.7693239 0.6313673 0.09755045 0.225385 + 0.1849702 0.9565499 0.3657641 0.3001751 0.8809719 0.4918069 0.4036149 0.7715057 0.598704 + 0.4913433 0.6325626 0.6824632 0.5600827 0.4696289 0.4172967 0.2230501 0.8809723 0.561098 + 0.2999126 0.771506 0.6830566 0.3651005 0.6325625 0.7786167 0.4161794 0.4696285 0.8442882 + 0.4512808 0.2890037 0.8777152 0.4691483 0.09755057 0.2571429 0.1374452 0.9565493 + 0.9161057 0.277898 0.2890035 0.9523764 0.2888998 0.09755057 0.279015 0.08463805 + 0.9565497 0.4527932 0.1373529 0.8809726 0.6088266 0.1846854 0.771506 0.7411593 0.2248277 + 0.6325626 0.8448486 0.2562817 0.4696282 0.6331588 0.06236135 0.7715057 0.7707797 + 0.07591521 0.6325626 0.878613 0.08653551 0.4696285 0.9527184 0.0938338 0.2890036 + 0.9904382 0.09754925 0.09755104 0.2901659 0.02857887 0.9565495 0.470889 0.04637873 + 0.8809726 0.9904382 -0.09755009 0.0975511 0.2901659 -0.02857887 0.9565497 0.4708888 + -0.04637879 0.8809726 0.6331588 -0.06236064 0.7715058 0.77078 -0.07591468 0.6325624 + 0.8786128 -0.08653646 0.4696285 0.9527184 -0.09383463 0.2890031 0.6088263 -0.1846854 + 0.7715062 0.7411594 -0.2248283 0.6325622 0.844848 -0.2562825 0.4696287 0.9161061 + -0.2778972 0.2890032 0.9523762 -0.2889006 0.09755104 0.2790152 -0.08463889 0.9565494 + 0.4527939 -0.1373534 0.880972 0.8777153 -0.4691479 0.09755104 0.2571449 -0.1374453 + 0.9565486 0.4172965 -0.2230502 0.8809723 0.5610979 -0.2999134 0.7715058 0.6830564 + -0.3651012 0.6325623 0.7786166 -0.4161794 0.4696286 0.8442881 -0.4512817 0.2890028 + 0.5987038 -0.4913435 0.6325626 0.6824631 -0.5600827 0.4696292 0.7400249 -0.6073223 + 0.289003 0.7693237 -0.6313675 0.09755128 0.2253849 -0.1849703 0.9565498 0.3657631 + -0.3001748 0.8809725 0.4918063 -0.4036154 0.771506 0.1849706 -0.2253867 0.9565495 + 0.300174 -0.3657643 0.8809723 0.4036158 -0.491806 0.7715058 0.4913434 -0.5987036 + 0.6325628 0.5600828 -0.682463 0.4696292 0.6073225 -0.7400249 0.2890028 0.6313673 + -0.7693238 0.09755045 0.4161788 -0.7786167 0.4696289 0.4512813 -0.8442882 0.2890029 + 0.4691479 -0.8777154 0.09755003 0.1374454 -0.257142 0.9565494 0.2230502 -0.417297 + 0.8809721 0.2999135 -0.5610982 0.7715055 0.3651001 -0.6830567 0.6325627 0.08464163 + -0.2790152 0.9565492 0.1373523 -0.4527939 0.8809723 0.1846855 -0.6088272 0.7715054 + 0.2248284 -0.7411593 0.6325623 0.2562809 -0.8448483 0.4696292 0.2778975 -0.9161058 + 0.2890037 0.2889001 -0.9523763 0.0975517 0.08653527 -0.8786126 0.4696293 0.09383463 + -0.9527182 0.2890037 0.09754925 -0.9904384 0.09755086 0.02857589 -0.2901663 0.9565495 + 0.04637771 -0.4708893 0.8809725 0.06236064 -0.6331588 0.7715058 0.07591474 -0.7707805 + 0.6325618 -0.04637771 -0.4708893 0.8809725 -0.0623607 -0.6331591 0.7715055 -0.07591521 + -0.7707805 0.6325618 -0.08653593 -0.8786123 0.4696297 -0.09383457 -0.9527183 0.2890036 + -0.09754991 -0.9904382 0.09755086 -0.02857589 -0.2901661 0.9565497 -0.2778976 -0.9161061 + 0.289003 -0.2889004 -0.9523761 0.09755164 -0.0846377 -0.2790153 0.9565495 -0.1373534 + -0.4527934 0.8809723 -0.1846855 -0.6088272 0.7715054 -0.2248284 -0.7411594 0.6325622 + -0.2562825 -0.8448479 0.4696289 -0.2230505 -0.4172965 0.8809723 -0.2999135 -0.561098 + 0.7715057 -0.3651016 -0.6830573 0.6325613 -0.4161792 -0.7786161 0.4696294 -0.4512816 + -0.8442881 0.2890028 -0.4691484 -0.8777149 0.09755164 -0.1374453 -0.2571419 0.9565494 + -0.6073229 -0.7400245 0.289003 -0.6313679 -0.7693235 0.09755128 -0.1849709 -0.2253872 + 0.9565493 -0.3001736 -0.3657632 0.8809729 -0.4036148 -0.4918066 0.771506 -0.491344 + -0.5987045 0.6325615 -0.5600828 -0.6824631 0.4696291 -0.4918063 -0.403615 0.771506 + -0.5987042 -0.4913439 0.6325618 -0.6824632 -0.5600821 0.4696297 -0.7400246 -0.607323 + 0.2890025 -0.7693238 -0.6313674 0.09755128 -0.2253852 -0.1849704 0.9565498 -0.3657638 + -0.3001744 0.8809723 -0.8777153 -0.4691479 0.09755104 -0.2571416 -0.1374451 0.9565495 + -0.4172967 -0.2230491 0.8809726 -0.5610983 -0.2999133 0.7715055 -0.6830567 -0.3651013 + 0.6325619 -0.7786164 -0.4161783 0.46963 -0.8442882 -0.4512817 0.2890025 -0.7411601 + -0.224828 0.6325615 -0.8448476 -0.2562816 0.46963 -0.9161062 -0.2778974 0.2890025 + -0.9523764 -0.2889 0.09755122 -0.2790146 -0.08463877 0.9565496 -0.4527929 -0.1373535 + 0.8809726 -0.6088262 -0.1846862 0.7715061 -0.2901672 -0.02857887 0.9565492 -0.4708892 + -0.04637825 0.8809725 -0.6331586 -0.0623607 0.7715059 -0.7707807 -0.0759148 0.6325616 + -0.8786123 -0.08653551 0.4696297 -0.9527187 -0.09383469 0.2890024 -0.9904382 -0.09754931 + 0.09755104 -0.7707806 0.07591593 0.6325614 -0.8786123 0.08653551 0.4696298 -0.9527186 + 0.09383553 0.2890024 -0.9904382 0.09754931 0.0975511 -0.2901663 0.0285784 0.9565494 + -0.4708888 0.04637879 0.8809727 -0.6331589 0.06236135 0.7715056 -0.2790146 0.08463877 + 0.9565497 -0.4527921 0.1373531 0.8809731 -0.6088267 0.1846854 0.7715059 -0.74116 + 0.2248281 0.6325616 -0.8448477 0.2562816 0.4696299 -0.9161063 0.2778974 0.2890023 + -0.9523763 0.2889 0.09755116 -0.7786158 0.4161794 0.46963 -0.8442883 0.4512818 0.2890021 + -0.8777149 0.4691486 0.0975508 -0.2571424 0.1374455 0.9565494 -0.4172956 0.2230504 + 0.8809728 -0.5610979 0.2999127 0.771506 -0.6830571 0.3651016 0.6325613 -0.225389 + 0.1849702 0.956549 -0.3657631 0.3001751 0.8809725 -0.4918058 0.4036151 0.7715062 + -0.5987047 0.4913443 0.6325612 -0.6824623 0.5600827 0.4696301 -0.740025 0.6073225 + 0.2890027 -0.7693235 0.6313679 0.09755086 -0.5600823 0.6824629 0.4696298 -0.6073228 + 0.7400251 0.2890018 -0.6313672 0.7693241 0.09755092 -0.184971 0.2253869 0.9565493 + -0.3001742 0.365764 0.8809723 -0.4036152 0.4918062 0.771506 -0.4913439 0.5987046 + 0.6325613 -0.2230494 0.4172967 0.8809725 -0.2999129 0.5610979 0.771506 -0.3651017 + 0.683057 0.6325614 -0.416178 0.7786163 0.4696304 -0.4512816 0.8442884 0.2890022 + -0.4691482 0.8777152 0.09755063 -0.1374489 0.257142 0.9565489 -0.2778977 0.9161065 + 0.2890014 -0.2889 0.9523764 0.09755057 -0.08463776 0.2790156 0.9565494 -0.1373515 + 0.4527937 0.8809725 -0.1846854 0.6088265 0.7715061 -0.2248284 0.7411606 0.6325609 + -0.2562813 0.8448477 0.46963 -0.0623629 0.6331578 0.7715064 -0.07591754 0.7707806 + 0.6325615 -0.08654028 0.8786118 0.46963 -0.09383684 0.9527184 0.2890021 -0.09755432 + 0.9904379 0.09755021 -0.02857983 0.2901662 0.9565495 -0.04638212 0.4708889 0.8809724 - - - + + + - 0.75 0.8125 0.71875 0.875 0.71875 0.8125 0.75 0.8125 0.71875 0.75 0.75 0.75 0.75 0.75 0.71875 0.6875 0.75 0.6875 0.75 0.6875 0.71875 0.625 0.75 0.625 0.75 0.625 0.71875 0.5625 0.75 0.5625 0.75 0.5625 0.71875 0.5 0.75 0.5 0.75 0.9375001 0.734375 1 0.7187499 0.9375001 0.75 0.875 0.7187499 0.9375001 0.71875 0.875 0.71875 0.875 0.6874999 0.9375001 0.6874999 0.875 0.71875 0.875 0.6874999 0.8125 0.71875 0.8125 0.71875 0.8125 0.6874999 0.75 0.71875 0.75 0.71875 0.75 0.6875 0.6875 0.71875 0.6875 0.71875 0.6875 0.6875 0.625 0.71875 0.625 0.71875 0.5625 0.6875 0.625 0.6875 0.5625 0.71875 0.5625 0.6875 0.5 0.71875 0.5 0.7187499 0.9375001 0.7031249 1 0.6874999 0.9375001 0.6875 0.6875 0.65625 0.625 0.6875 0.625 0.6875 0.5625 0.65625 0.625 0.65625 0.5625 0.6875 0.5 0.65625 0.5625 0.65625 0.5 0.6874999 0.9375001 0.6718748 1 0.6562498 0.9375001 0.6874999 0.9375001 0.6562499 0.875 0.6874999 0.875 0.6874999 0.8125 0.6562499 0.875 0.6562499 0.8125 0.6874999 0.75 0.6562499 0.8125 0.6562499 0.75 0.6874999 0.75 0.65625 0.6875 0.6875 0.6875 0.6562499 0.875 0.6249999 0.8125 0.6562499 0.8125 0.6562499 0.8125 0.6249999 0.75 0.6562499 0.75 0.6562499 0.75 0.6249999 0.6875 0.65625 0.6875 0.65625 0.6875 0.6249999 0.625 0.65625 0.625 0.65625 0.5625 0.6249999 0.625 0.6249999 0.5625 0.65625 0.5 0.6249999 0.5625 0.6249999 0.5 0.6562498 0.9375001 0.6406248 1 0.6249998 0.9375 0.6562498 0.9375001 0.6249999 0.875 0.6562499 0.875 0.6249999 0.5625 0.5937499 0.625 0.5937499 0.5625 0.6249999 0.5 0.5937499 0.5625 0.5937499 0.5 0.6249998 0.9375 0.6093747 1 0.5937498 0.9375 0.6249998 0.9375 0.5937499 0.875 0.6249999 0.875 0.6249999 0.875 0.5937499 0.8125 0.6249999 0.8125 0.6249999 0.8125 0.5937499 0.75 0.6249999 0.75 0.6249999 0.6875 0.5937499 0.75 0.5937499 0.6875 0.6249999 0.6875 0.5937499 0.625 0.6249999 0.625 0.5937499 0.875 0.5624999 0.8125 0.5937499 0.8125 0.5937499 0.8125 0.5624999 0.75 0.5937499 0.75 0.5937499 0.6875 0.5624999 0.75 0.5624999 0.6875 0.5937499 0.6875 0.5624999 0.625 0.5937499 0.625 0.5937499 0.5625 0.5624999 0.625 0.5624999 0.5625 0.5937499 0.5625 0.5624999 0.5 0.5937499 0.5 0.5937498 0.9375 0.5781245 1 0.5624998 0.9375 0.5937498 0.9375 0.5624999 0.875 0.5937499 0.875 0.5624999 0.5625 0.5312499 0.625 0.5312499 0.5625 0.5624999 0.5625 0.5312499 0.5 0.5624999 0.5 0.5624998 0.9375 0.5468745 1 0.5312498 0.9375 0.5624998 0.9375 0.5312499 0.875 0.5624999 0.875 0.5624999 0.875 0.5312499 0.8125 0.5624999 0.8125 0.5624999 0.8125 0.5312499 0.75 0.5624999 0.75 0.5624999 0.6875 0.5312499 0.75 0.5312499 0.6875 0.5624999 0.6875 0.5312499 0.625 0.5624999 0.625 0.5312499 0.8125 0.4999999 0.75 0.5312499 0.75 0.5312499 0.75 0.4999999 0.6875 0.5312499 0.6875 0.5312499 0.6875 0.4999999 0.625 0.5312499 0.625 0.5312499 0.5625 0.4999999 0.625 0.4999999 0.5625 0.5312499 0.5625 0.4999999 0.5 0.5312499 0.5 0.5312498 0.9375 0.5156245 1 0.4999997 0.9375 0.5312498 0.9375 0.4999998 0.875 0.5312499 0.875 0.5312499 0.875 0.4999999 0.8125 0.5312499 0.8125 0.4999999 0.5625 0.4687499 0.5 0.4999999 0.5 0.4999997 0.9375 0.4843745 1 0.4687497 0.9375 0.4999997 0.9375 0.4687498 0.8749999 0.4999998 0.875 0.4999998 0.875 0.4687499 0.8125 0.4999999 0.8125 0.4999999 0.8125 0.4687499 0.75 0.4999999 0.75 0.4999999 0.75 0.4687499 0.6875 0.4999999 0.6875 0.4999999 0.6875 0.4687499 0.625 0.4999999 0.625 0.4999999 0.5625 0.4687499 0.625 0.4687499 0.5625 0.4687499 0.8125 0.4374999 0.75 0.4687499 0.75 0.4687499 0.6875 0.4374999 0.75 0.4374999 0.6875 0.4687499 0.6875 0.4375 0.625 0.4687499 0.625 0.4687499 0.5625 0.4375 0.625 0.4374999 0.5625 0.4687499 0.5625 0.4374999 0.5 0.4687499 0.5 0.4687497 0.9375 0.4531245 1 0.4374997 0.9375 0.4687497 0.9375 0.4374998 0.8749999 0.4687498 0.8749999 0.4687498 0.8749999 0.4374999 0.8125 0.4687499 0.8125 0.4374999 0.5625 0.4062499 0.5 0.4374999 0.5 0.4374997 0.9375 0.4218745 1 0.4062497 0.9375 0.4374997 0.9375 0.4062499 0.8749999 0.4374998 0.8749999 0.4374998 0.8749999 0.4062499 0.8125 0.4374999 0.8125 0.4374999 0.8125 0.4062499 0.7499999 0.4374999 0.75 0.4374999 0.6875 0.4062499 0.7499999 0.4062499 0.6875 0.4374999 0.6875 0.40625 0.625 0.4375 0.625 0.4374999 0.5625 0.40625 0.625 0.4062499 0.5625 0.4062499 0.6875 0.3749999 0.75 0.3749999 0.6875 0.4062499 0.6875 0.375 0.625 0.40625 0.625 0.4062499 0.5625 0.375 0.625 0.3749999 0.5625 0.4062499 0.5 0.3749999 0.5625 0.3749999 0.5 0.4062497 0.9375 0.3906245 1 0.3749998 0.9375 0.4062497 0.9375 0.3749999 0.8749999 0.4062499 0.8749999 0.4062499 0.8749999 0.3749999 0.8124999 0.4062499 0.8125 0.4062499 0.8125 0.3749999 0.75 0.4062499 0.7499999 0.3749998 0.9375 0.3437499 0.8749999 0.3749999 0.8749999 0.3749999 0.8749999 0.3437499 0.8124999 0.3749999 0.8124999 0.3749999 0.8124999 0.3437499 0.7499999 0.3749999 0.75 0.3749999 0.6875 0.3437499 0.7499999 0.3437499 0.6875 0.3749999 0.6875 0.34375 0.625 0.375 0.625 0.3749999 0.5625 0.34375 0.625 0.3437499 0.5625 0.3749999 0.5 0.3437499 0.5625 0.3437499 0.5 0.3749998 0.9375 0.3593746 1 0.3437498 0.9375 0.3437499 0.6875 0.3125 0.625 0.34375 0.625 0.3437499 0.5625 0.3125 0.625 0.3125 0.5625 0.3437499 0.5 0.3125 0.5625 0.3125 0.5 0.3437498 0.9375 0.3281247 1 0.3124999 0.9375 0.3437498 0.9375 0.3125 0.8749999 0.3437499 0.8749999 0.3437499 0.8124999 0.3125 0.8749999 0.3125 0.8124999 0.3437499 0.8124999 0.3125 0.75 0.3437499 0.7499999 0.3437499 0.7499999 0.3125 0.6875 0.3437499 0.6875 0.3124999 0.9375 0.28125 0.8749999 0.3125 0.8749999 0.3125 0.8124999 0.28125 0.8749999 0.28125 0.8124999 0.3125 0.75 0.28125 0.8124999 0.28125 0.75 0.3125 0.75 0.28125 0.6875 0.3125 0.6875 0.3125 0.6875 0.28125 0.625 0.3125 0.625 0.3125 0.5625 0.28125 0.625 0.28125 0.5625 0.3125 0.5 0.28125 0.5625 0.28125 0.5 0.3124999 0.9375 0.2968747 1 0.2812499 0.9375 0.28125 0.6875 0.25 0.625 0.28125 0.625 0.28125 0.5625 0.25 0.625 0.25 0.5625 0.28125 0.5 0.25 0.5625 0.25 0.5 0.2812499 0.9375 0.2656248 1 0.25 0.9375 0.2812499 0.9375 0.25 0.8749999 0.28125 0.8749999 0.28125 0.8749999 0.25 0.8124999 0.28125 0.8124999 0.28125 0.75 0.25 0.8124999 0.25 0.75 0.28125 0.75 0.25 0.6875 0.28125 0.6875 0.25 0.8749999 0.21875 0.8124999 0.25 0.8124999 0.25 0.75 0.21875 0.8124999 0.21875 0.75 0.25 0.6875 0.21875 0.75 0.21875 0.6875 0.25 0.6875 0.21875 0.625 0.25 0.625 0.25 0.5625 0.21875 0.625 0.21875 0.5625 0.25 0.5 0.21875 0.5625 0.21875 0.5 0.25 0.9375 0.2343749 1 0.21875 0.9375 0.25 0.9375 0.21875 0.8749999 0.25 0.8749999 0.21875 0.5625 0.1875 0.625 0.1875 0.5625 0.21875 0.5 0.1875 0.5625 0.1875 0.5 0.21875 0.9375 0.203125 1 0.1875001 0.9375 0.21875 0.9375 0.1875 0.8749999 0.21875 0.8749999 0.21875 0.8749999 0.1875 0.8124999 0.21875 0.8124999 0.21875 0.75 0.1875 0.8124999 0.1875 0.75 0.21875 0.6875 0.1875 0.75 0.1875 0.6875 0.21875 0.6875 0.1875 0.625 0.21875 0.625 0.1875 0.8749999 0.15625 0.8125 0.1875 0.8124999 0.1875 0.75 0.15625 0.8125 0.15625 0.75 0.1875 0.6875 0.15625 0.75 0.15625 0.6875 0.1875 0.6875 0.15625 0.625 0.1875 0.625 0.1875 0.5625 0.15625 0.625 0.15625 0.5625 0.1875 0.5 0.15625 0.5625 0.15625 0.5 0.1875001 0.9375 0.1718751 1 0.1562501 0.9375 0.1875001 0.9375 0.15625 0.8749999 0.1875 0.8749999 0.15625 0.5625 0.125 0.625 0.125 0.5625 0.15625 0.5 0.125 0.5625 0.125 0.5 0.1562501 0.9375 0.1406252 1 0.1250001 0.9375 0.1562501 0.9375 0.125 0.875 0.15625 0.8749999 0.15625 0.8749999 0.125 0.8125 0.15625 0.8125 0.15625 0.75 0.125 0.8125 0.125 0.75 0.15625 0.6875 0.125 0.75 0.125 0.6875 0.15625 0.6875 0.125 0.625 0.15625 0.625 0.125 0.75 0.09375 0.8125 0.09375 0.75 0.125 0.6875 0.09375 0.75 0.09375 0.6875 0.125 0.6875 0.09375 0.625 0.125 0.625 0.125 0.5625 0.09375 0.625 0.09374994 0.5625 0.125 0.5 0.09374994 0.5625 0.09374994 0.5 0.1250001 0.9375 0.1093752 1 0.09375017 0.9375 0.1250001 0.9375 0.09375005 0.875 0.125 0.875 0.125 0.875 0.09375 0.8125 0.125 0.8125 0.09374994 0.5625 0.0625 0.5 0.09374994 0.5 0.09375017 0.9375 0.07812535 1 0.06250017 0.9375 0.09375017 0.9375 0.06250011 0.875 0.09375005 0.875 0.09375005 0.875 0.06250005 0.8125 0.09375 0.8125 0.09375 0.75 0.06250005 0.8125 0.0625 0.75 0.09375 0.6875 0.0625 0.75 0.0625 0.6875 0.09375 0.6875 0.0625 0.625 0.09375 0.625 0.09374994 0.5625 0.0625 0.625 0.0625 0.5625001 0.0625 0.6875 0.03125 0.75 0.03125 0.6875001 0.0625 0.6875 0.03125 0.625 0.0625 0.625 0.0625 0.5625001 0.03125 0.625 0.03124994 0.5625001 0.0625 0.5625001 0.03125 0.5 0.0625 0.5 0.06250017 0.9375 0.04687541 1 0.03125023 0.9375 0.06250017 0.9375 0.03125005 0.875 0.06250011 0.875 0.06250011 0.875 0.03125005 0.8125 0.06250005 0.8125 0.0625 0.75 0.03125005 0.8125 0.03125 0.75 0.03125023 0.9375 0.01562547 1 2.38419e-7 0.9375 0.03125005 0.875 2.38419e-7 0.9375 0 0.875 0.03125005 0.875 0 0.8125 0.03125005 0.8125 0.03125 0.75 0 0.8125 0 0.75 0.03125 0.6875001 0 0.75 0 0.6875001 0.03125 0.6875001 0 0.625 0.03125 0.625 0.03124994 0.5625001 0 0.625 0 0.5625001 0.03124994 0.5625001 0 0.5 0.03125 0.5 1 0.75 0.96875 0.6875001 1 0.6875001 1 0.6875001 0.96875 0.625 1 0.625 1 0.5625001 0.96875 0.625 0.96875 0.5625001 1 0.5625001 0.96875 0.5 1 0.5 1 0.9375 0.9843755 1 0.9687502 0.9375001 1 0.875 0.9687502 0.9375001 0.9687501 0.875 1 0.875 0.96875 0.8125 1 0.8125 1 0.75 0.96875 0.8125 0.96875 0.75 0.9687501 0.875 0.9375002 0.9375001 0.9375001 0.8750001 0.9687501 0.875 0.9375 0.8125001 0.96875 0.8125 0.96875 0.75 0.9375 0.8125001 0.9375 0.7500001 0.96875 0.6875001 0.9375 0.7500001 0.9375 0.6875001 0.96875 0.6875001 0.9375 0.6250001 0.96875 0.625 0.96875 0.5625001 0.9375 0.6250001 0.9375 0.5625001 0.96875 0.5625001 0.9375 0.5 0.96875 0.5 0.9687502 0.9375001 0.9531255 1 0.9375002 0.9375001 0.9375 0.6875001 0.90625 0.6250001 0.9375 0.6250001 0.9375 0.5625001 0.90625 0.6250001 0.90625 0.5625001 0.9375 0.5625001 0.90625 0.5 0.9375 0.5 0.9375002 0.9375001 0.9218755 1 0.9062501 0.9375001 0.9375001 0.8750001 0.9062501 0.9375001 0.9062501 0.8750001 0.9375001 0.8750001 0.90625 0.8125001 0.9375 0.8125001 0.9375 0.7500001 0.90625 0.8125001 0.90625 0.7500001 0.9375 0.6875001 0.90625 0.7500001 0.90625 0.6875001 0.9062501 0.9375001 0.875 0.8750001 0.9062501 0.8750001 0.9062501 0.8750001 0.875 0.8125001 0.90625 0.8125001 0.90625 0.7500001 0.875 0.8125001 0.875 0.7500001 0.90625 0.6875001 0.875 0.7500001 0.875 0.6875001 0.90625 0.6875001 0.875 0.6250001 0.90625 0.6250001 0.90625 0.5625001 0.875 0.6250001 0.875 0.5625001 0.90625 0.5625001 0.875 0.5 0.90625 0.5 0.9062501 0.9375001 0.8906254 1 0.8750001 0.9375001 0.875 0.6875001 0.84375 0.6250001 0.875 0.6250001 0.875 0.5625001 0.84375 0.6250001 0.84375 0.5625001 0.875 0.5 0.84375 0.5625001 0.84375 0.5 0.8750001 0.9375001 0.8593754 1 0.8437501 0.9375001 0.8750001 0.9375001 0.84375 0.8750001 0.875 0.8750001 0.875 0.8750001 0.84375 0.8125001 0.875 0.8125001 0.875 0.8125001 0.84375 0.7500001 0.875 0.7500001 0.875 0.6875001 0.84375 0.7500001 0.84375 0.6875001 0.84375 0.8125001 0.8125 0.8750001 0.8125 0.8125001 0.84375 0.7500001 0.8125 0.8125001 0.8125 0.7500001 0.84375 0.6875001 0.8125 0.7500001 0.8124999 0.6875001 0.84375 0.6875001 0.8125 0.6250001 0.84375 0.6250001 0.84375 0.5625001 0.8125 0.6250001 0.8125 0.5625001 0.84375 0.5625001 0.8125 0.5 0.84375 0.5 0.8437501 0.9375001 0.8281252 1 0.8125 0.9375001 0.84375 0.8750001 0.8125 0.9375001 0.8125 0.8750001 0.8125 0.5625001 0.78125 0.6250001 0.7812499 0.5625001 0.8125 0.5625001 0.7812499 0.5 0.8125 0.5 0.8125 0.9375001 0.7968752 1 0.78125 0.9375001 0.8125 0.9375001 0.78125 0.8750001 0.8125 0.8750001 0.8125 0.8750001 0.78125 0.8125001 0.8125 0.8125001 0.8125 0.8125001 0.78125 0.7500001 0.8125 0.7500001 0.8124999 0.6875001 0.78125 0.7500001 0.7812499 0.6875001 0.8124999 0.6875001 0.78125 0.6250001 0.8125 0.6250001 0.78125 0.7500001 0.75 0.8125 0.75 0.75 0.7812499 0.6875001 0.75 0.75 0.75 0.6875 0.78125 0.6250001 0.75 0.6875 0.75 0.625 0.7812499 0.5625001 0.75 0.625 0.75 0.5625 0.7812499 0.5 0.75 0.5625 0.75 0.5 0.78125 0.9375001 0.7656251 1 0.75 0.9375001 0.78125 0.8750001 0.75 0.9375001 0.75 0.875 0.78125 0.8125001 0.75 0.875 0.75 0.8125 0.75 0.8125 0.75 0.875 0.71875 0.875 0.75 0.8125 0.71875 0.8125 0.71875 0.75 0.75 0.75 0.71875 0.75 0.71875 0.6875 0.75 0.6875 0.71875 0.6875 0.71875 0.625 0.75 0.625 0.71875 0.625 0.71875 0.5625 0.75 0.5625 0.71875 0.5625 0.71875 0.5 0.75 0.875 0.75 0.9375001 0.7187499 0.9375001 0.71875 0.875 0.7187499 0.9375001 0.6874999 0.9375001 0.71875 0.875 0.6874999 0.875 0.6874999 0.8125 0.71875 0.8125 0.6874999 0.8125 0.6874999 0.75 0.71875 0.75 0.6874999 0.75 0.6875 0.6875 0.71875 0.6875 0.6875 0.6875 0.6875 0.625 0.71875 0.5625 0.71875 0.625 0.6875 0.625 0.71875 0.5625 0.6875 0.5625 0.6875 0.5 0.6875 0.6875 0.65625 0.6875 0.65625 0.625 0.6875 0.5625 0.6875 0.625 0.65625 0.625 0.6875 0.5 0.6875 0.5625 0.65625 0.5625 0.6874999 0.9375001 0.6562498 0.9375001 0.6562499 0.875 0.6874999 0.8125 0.6874999 0.875 0.6562499 0.875 0.6874999 0.75 0.6874999 0.8125 0.6562499 0.8125 0.6874999 0.75 0.6562499 0.75 0.65625 0.6875 0.6562499 0.875 0.6249999 0.875 0.6249999 0.8125 0.6562499 0.8125 0.6249999 0.8125 0.6249999 0.75 0.6562499 0.75 0.6249999 0.75 0.6249999 0.6875 0.65625 0.6875 0.6249999 0.6875 0.6249999 0.625 0.65625 0.5625 0.65625 0.625 0.6249999 0.625 0.65625 0.5 0.65625 0.5625 0.6249999 0.5625 0.6562498 0.9375001 0.6249998 0.9375 0.6249999 0.875 0.6249999 0.5625 0.6249999 0.625 0.5937499 0.625 0.6249999 0.5 0.6249999 0.5625 0.5937499 0.5625 0.6249998 0.9375 0.5937498 0.9375 0.5937499 0.875 0.6249999 0.875 0.5937499 0.875 0.5937499 0.8125 0.6249999 0.8125 0.5937499 0.8125 0.5937499 0.75 0.6249999 0.6875 0.6249999 0.75 0.5937499 0.75 0.6249999 0.6875 0.5937499 0.6875 0.5937499 0.625 0.5937499 0.875 0.5624999 0.875 0.5624999 0.8125 0.5937499 0.8125 0.5624999 0.8125 0.5624999 0.75 0.5937499 0.6875 0.5937499 0.75 0.5624999 0.75 0.5937499 0.6875 0.5624999 0.6875 0.5624999 0.625 0.5937499 0.5625 0.5937499 0.625 0.5624999 0.625 0.5937499 0.5625 0.5624999 0.5625 0.5624999 0.5 0.5937498 0.9375 0.5624998 0.9375 0.5624999 0.875 0.5624999 0.5625 0.5624999 0.625 0.5312499 0.625 0.5624999 0.5625 0.5312499 0.5625 0.5312499 0.5 0.5624998 0.9375 0.5312498 0.9375 0.5312499 0.875 0.5624999 0.875 0.5312499 0.875 0.5312499 0.8125 0.5624999 0.8125 0.5312499 0.8125 0.5312499 0.75 0.5624999 0.6875 0.5624999 0.75 0.5312499 0.75 0.5624999 0.6875 0.5312499 0.6875 0.5312499 0.625 0.5312499 0.8125 0.4999999 0.8125 0.4999999 0.75 0.5312499 0.75 0.4999999 0.75 0.4999999 0.6875 0.5312499 0.6875 0.4999999 0.6875 0.4999999 0.625 0.5312499 0.5625 0.5312499 0.625 0.4999999 0.625 0.5312499 0.5625 0.4999999 0.5625 0.4999999 0.5 0.5312498 0.9375 0.4999997 0.9375 0.4999998 0.875 0.5312499 0.875 0.4999998 0.875 0.4999999 0.8125 0.4999999 0.5625 0.4687499 0.5625 0.4687499 0.5 0.4999997 0.9375 0.4687497 0.9375 0.4687498 0.8749999 0.4999998 0.875 0.4687498 0.8749999 0.4687499 0.8125 0.4999999 0.8125 0.4687499 0.8125 0.4687499 0.75 0.4999999 0.75 0.4687499 0.75 0.4687499 0.6875 0.4999999 0.6875 0.4687499 0.6875 0.4687499 0.625 0.4999999 0.5625 0.4999999 0.625 0.4687499 0.625 0.4687499 0.8125 0.4374999 0.8125 0.4374999 0.75 0.4687499 0.6875 0.4687499 0.75 0.4374999 0.75 0.4687499 0.6875 0.4374999 0.6875 0.4375 0.625 0.4687499 0.5625 0.4687499 0.625 0.4375 0.625 0.4687499 0.5625 0.4374999 0.5625 0.4374999 0.5 0.4687497 0.9375 0.4374997 0.9375 0.4374998 0.8749999 0.4687498 0.8749999 0.4374998 0.8749999 0.4374999 0.8125 0.4374999 0.5625 0.4062499 0.5625 0.4062499 0.5 0.4374997 0.9375 0.4062497 0.9375 0.4062499 0.8749999 0.4374998 0.8749999 0.4062499 0.8749999 0.4062499 0.8125 0.4374999 0.8125 0.4062499 0.8125 0.4062499 0.7499999 0.4374999 0.6875 0.4374999 0.75 0.4062499 0.7499999 0.4374999 0.6875 0.4062499 0.6875 0.40625 0.625 0.4374999 0.5625 0.4375 0.625 0.40625 0.625 0.4062499 0.6875 0.4062499 0.7499999 0.3749999 0.75 0.4062499 0.6875 0.3749999 0.6875 0.375 0.625 0.4062499 0.5625 0.40625 0.625 0.375 0.625 0.4062499 0.5 0.4062499 0.5625 0.3749999 0.5625 0.4062497 0.9375 0.3749998 0.9375 0.3749999 0.8749999 0.4062499 0.8749999 0.3749999 0.8749999 0.3749999 0.8124999 0.4062499 0.8125 0.3749999 0.8124999 0.3749999 0.75 0.3749998 0.9375 0.3437498 0.9375 0.3437499 0.8749999 0.3749999 0.8749999 0.3437499 0.8749999 0.3437499 0.8124999 0.3749999 0.8124999 0.3437499 0.8124999 0.3437499 0.7499999 0.3749999 0.6875 0.3749999 0.75 0.3437499 0.7499999 0.3749999 0.6875 0.3437499 0.6875 0.34375 0.625 0.3749999 0.5625 0.375 0.625 0.34375 0.625 0.3749999 0.5 0.3749999 0.5625 0.3437499 0.5625 0.3437499 0.6875 0.3125 0.6875 0.3125 0.625 0.3437499 0.5625 0.34375 0.625 0.3125 0.625 0.3437499 0.5 0.3437499 0.5625 0.3125 0.5625 0.3437498 0.9375 0.3124999 0.9375 0.3125 0.8749999 0.3437499 0.8124999 0.3437499 0.8749999 0.3125 0.8749999 0.3437499 0.8124999 0.3125 0.8124999 0.3125 0.75 0.3437499 0.7499999 0.3125 0.75 0.3125 0.6875 0.3124999 0.9375 0.2812499 0.9375 0.28125 0.8749999 0.3125 0.8124999 0.3125 0.8749999 0.28125 0.8749999 0.3125 0.75 0.3125 0.8124999 0.28125 0.8124999 0.3125 0.75 0.28125 0.75 0.28125 0.6875 0.3125 0.6875 0.28125 0.6875 0.28125 0.625 0.3125 0.5625 0.3125 0.625 0.28125 0.625 0.3125 0.5 0.3125 0.5625 0.28125 0.5625 0.28125 0.6875 0.25 0.6875 0.25 0.625 0.28125 0.5625 0.28125 0.625 0.25 0.625 0.28125 0.5 0.28125 0.5625 0.25 0.5625 0.2812499 0.9375 0.25 0.9375 0.25 0.8749999 0.28125 0.8749999 0.25 0.8749999 0.25 0.8124999 0.28125 0.75 0.28125 0.8124999 0.25 0.8124999 0.28125 0.75 0.25 0.75 0.25 0.6875 0.25 0.8749999 0.21875 0.8749999 0.21875 0.8124999 0.25 0.75 0.25 0.8124999 0.21875 0.8124999 0.25 0.6875 0.25 0.75 0.21875 0.75 0.25 0.6875 0.21875 0.6875 0.21875 0.625 0.25 0.5625 0.25 0.625 0.21875 0.625 0.25 0.5 0.25 0.5625 0.21875 0.5625 0.25 0.9375 0.21875 0.9375 0.21875 0.8749999 0.21875 0.5625 0.21875 0.625 0.1875 0.625 0.21875 0.5 0.21875 0.5625 0.1875 0.5625 0.21875 0.9375 0.1875001 0.9375 0.1875 0.8749999 0.21875 0.8749999 0.1875 0.8749999 0.1875 0.8124999 0.21875 0.75 0.21875 0.8124999 0.1875 0.8124999 0.21875 0.6875 0.21875 0.75 0.1875 0.75 0.21875 0.6875 0.1875 0.6875 0.1875 0.625 0.1875 0.8749999 0.15625 0.8749999 0.15625 0.8125 0.1875 0.75 0.1875 0.8124999 0.15625 0.8125 0.1875 0.6875 0.1875 0.75 0.15625 0.75 0.1875 0.6875 0.15625 0.6875 0.15625 0.625 0.1875 0.5625 0.1875 0.625 0.15625 0.625 0.1875 0.5 0.1875 0.5625 0.15625 0.5625 0.1875001 0.9375 0.1562501 0.9375 0.15625 0.8749999 0.15625 0.5625 0.15625 0.625 0.125 0.625 0.15625 0.5 0.15625 0.5625 0.125 0.5625 0.1562501 0.9375 0.1250001 0.9375 0.125 0.875 0.15625 0.8749999 0.125 0.875 0.125 0.8125 0.15625 0.75 0.15625 0.8125 0.125 0.8125 0.15625 0.6875 0.15625 0.75 0.125 0.75 0.15625 0.6875 0.125 0.6875 0.125 0.625 0.125 0.75 0.125 0.8125 0.09375 0.8125 0.125 0.6875 0.125 0.75 0.09375 0.75 0.125 0.6875 0.09375 0.6875 0.09375 0.625 0.125 0.5625 0.125 0.625 0.09375 0.625 0.125 0.5 0.125 0.5625 0.09374994 0.5625 0.1250001 0.9375 0.09375017 0.9375 0.09375005 0.875 0.125 0.875 0.09375005 0.875 0.09375 0.8125 0.09374994 0.5625 0.0625 0.5625001 0.0625 0.5 0.09375017 0.9375 0.06250017 0.9375 0.06250011 0.875 0.09375005 0.875 0.06250011 0.875 0.06250005 0.8125 0.09375 0.75 0.09375 0.8125 0.06250005 0.8125 0.09375 0.6875 0.09375 0.75 0.0625 0.75 0.09375 0.6875 0.0625 0.6875 0.0625 0.625 0.09374994 0.5625 0.09375 0.625 0.0625 0.625 0.0625 0.6875 0.0625 0.75 0.03125 0.75 0.0625 0.6875 0.03125 0.6875001 0.03125 0.625 0.0625 0.5625001 0.0625 0.625 0.03125 0.625 0.0625 0.5625001 0.03124994 0.5625001 0.03125 0.5 0.06250017 0.9375 0.03125023 0.9375 0.03125005 0.875 0.06250011 0.875 0.03125005 0.875 0.03125005 0.8125 0.0625 0.75 0.06250005 0.8125 0.03125005 0.8125 0.03125005 0.875 0.03125023 0.9375 2.38419e-7 0.9375 0.03125005 0.875 0 0.875 0 0.8125 0.03125 0.75 0.03125005 0.8125 0 0.8125 0.03125 0.6875001 0.03125 0.75 0 0.75 0.03125 0.6875001 0 0.6875001 0 0.625 0.03124994 0.5625001 0.03125 0.625 0 0.625 0.03124994 0.5625001 0 0.5625001 0 0.5 1 0.75 0.96875 0.75 0.96875 0.6875001 1 0.6875001 0.96875 0.6875001 0.96875 0.625 1 0.5625001 1 0.625 0.96875 0.625 1 0.5625001 0.96875 0.5625001 0.96875 0.5 1 0.875 1 0.9375 0.9687502 0.9375001 1 0.875 0.9687501 0.875 0.96875 0.8125 1 0.75 1 0.8125 0.96875 0.8125 0.9687501 0.875 0.9687502 0.9375001 0.9375002 0.9375001 0.9687501 0.875 0.9375001 0.8750001 0.9375 0.8125001 0.96875 0.75 0.96875 0.8125 0.9375 0.8125001 0.96875 0.6875001 0.96875 0.75 0.9375 0.7500001 0.96875 0.6875001 0.9375 0.6875001 0.9375 0.6250001 0.96875 0.5625001 0.96875 0.625 0.9375 0.6250001 0.96875 0.5625001 0.9375 0.5625001 0.9375 0.5 0.9375 0.6875001 0.90625 0.6875001 0.90625 0.6250001 0.9375 0.5625001 0.9375 0.6250001 0.90625 0.6250001 0.9375 0.5625001 0.90625 0.5625001 0.90625 0.5 0.9375001 0.8750001 0.9375002 0.9375001 0.9062501 0.9375001 0.9375001 0.8750001 0.9062501 0.8750001 0.90625 0.8125001 0.9375 0.7500001 0.9375 0.8125001 0.90625 0.8125001 0.9375 0.6875001 0.9375 0.7500001 0.90625 0.7500001 0.9062501 0.9375001 0.8750001 0.9375001 0.875 0.8750001 0.9062501 0.8750001 0.875 0.8750001 0.875 0.8125001 0.90625 0.7500001 0.90625 0.8125001 0.875 0.8125001 0.90625 0.6875001 0.90625 0.7500001 0.875 0.7500001 0.90625 0.6875001 0.875 0.6875001 0.875 0.6250001 0.90625 0.5625001 0.90625 0.6250001 0.875 0.6250001 0.90625 0.5625001 0.875 0.5625001 0.875 0.5 0.875 0.6875001 0.84375 0.6875001 0.84375 0.6250001 0.875 0.5625001 0.875 0.6250001 0.84375 0.6250001 0.875 0.5 0.875 0.5625001 0.84375 0.5625001 0.8750001 0.9375001 0.8437501 0.9375001 0.84375 0.8750001 0.875 0.8750001 0.84375 0.8750001 0.84375 0.8125001 0.875 0.8125001 0.84375 0.8125001 0.84375 0.7500001 0.875 0.6875001 0.875 0.7500001 0.84375 0.7500001 0.84375 0.8125001 0.84375 0.8750001 0.8125 0.8750001 0.84375 0.7500001 0.84375 0.8125001 0.8125 0.8125001 0.84375 0.6875001 0.84375 0.7500001 0.8125 0.7500001 0.84375 0.6875001 0.8124999 0.6875001 0.8125 0.6250001 0.84375 0.5625001 0.84375 0.6250001 0.8125 0.6250001 0.84375 0.5625001 0.8125 0.5625001 0.8125 0.5 0.84375 0.8750001 0.8437501 0.9375001 0.8125 0.9375001 0.8125 0.5625001 0.8125 0.6250001 0.78125 0.6250001 0.8125 0.5625001 0.7812499 0.5625001 0.7812499 0.5 0.8125 0.9375001 0.78125 0.9375001 0.78125 0.8750001 0.8125 0.8750001 0.78125 0.8750001 0.78125 0.8125001 0.8125 0.8125001 0.78125 0.8125001 0.78125 0.7500001 0.8124999 0.6875001 0.8125 0.7500001 0.78125 0.7500001 0.8124999 0.6875001 0.7812499 0.6875001 0.78125 0.6250001 0.78125 0.7500001 0.78125 0.8125001 0.75 0.8125 0.7812499 0.6875001 0.78125 0.7500001 0.75 0.75 0.78125 0.6250001 0.7812499 0.6875001 0.75 0.6875 0.7812499 0.5625001 0.78125 0.6250001 0.75 0.625 0.7812499 0.5 0.7812499 0.5625001 0.75 0.5625 0.78125 0.8750001 0.78125 0.9375001 0.75 0.9375001 0.78125 0.8125001 0.78125 0.8750001 0.75 0.875 + 0.75 0.8125 0.71875 0.875 0.71875 + 0.8125 0.75 0.8125 0.71875 0.75 0.75 0.75 0.75 0.75 0.71875 0.6875 0.75 0.6875 0.75 + 0.6875 0.71875 0.625 0.75 0.625 0.75 0.625 0.71875 0.5625 0.75 0.5625 0.75 0.5625 + 0.71875 0.5 0.75 0.5 0.75 0.9375001 0.734375 1 0.7187499 0.9375001 0.75 0.875 0.7187499 + 0.9375001 0.71875 0.875 0.71875 0.875 0.6874999 0.9375001 0.6874999 0.875 0.71875 0.875 + 0.6874999 0.8125 0.71875 0.8125 0.71875 0.8125 0.6874999 0.75 0.71875 0.75 0.71875 0.75 + 0.6875 0.6875 0.71875 0.6875 0.71875 0.6875 0.6875 0.625 0.71875 0.625 0.71875 0.5625 + 0.6875 0.625 0.6875 0.5625 0.71875 0.5625 0.6875 0.5 0.71875 0.5 0.7187499 0.9375001 + 0.7031249 1 0.6874999 0.9375001 0.6875 0.6875 0.65625 0.625 0.6875 0.625 0.6875 0.5625 + 0.65625 0.625 0.65625 0.5625 0.6875 0.5 0.65625 0.5625 0.65625 0.5 0.6874999 0.9375001 + 0.6718748 1 0.6562498 0.9375001 0.6874999 0.9375001 0.6562499 0.875 0.6874999 0.875 + 0.6874999 0.8125 0.6562499 0.875 0.6562499 0.8125 0.6874999 0.75 0.6562499 0.8125 + 0.6562499 0.75 0.6874999 0.75 0.65625 0.6875 0.6875 0.6875 0.6562499 0.875 0.6249999 + 0.8125 0.6562499 0.8125 0.6562499 0.8125 0.6249999 0.75 0.6562499 0.75 0.6562499 0.75 + 0.6249999 0.6875 0.65625 0.6875 0.65625 0.6875 0.6249999 0.625 0.65625 0.625 0.65625 + 0.5625 0.6249999 0.625 0.6249999 0.5625 0.65625 0.5 0.6249999 0.5625 0.6249999 0.5 + 0.6562498 0.9375001 0.6406248 1 0.6249998 0.9375 0.6562498 0.9375001 0.6249999 0.875 + 0.6562499 0.875 0.6249999 0.5625 0.5937499 0.625 0.5937499 0.5625 0.6249999 0.5 + 0.5937499 0.5625 0.5937499 0.5 0.6249998 0.9375 0.6093747 1 0.5937498 0.9375 0.6249998 + 0.9375 0.5937499 0.875 0.6249999 0.875 0.6249999 0.875 0.5937499 0.8125 0.6249999 0.8125 + 0.6249999 0.8125 0.5937499 0.75 0.6249999 0.75 0.6249999 0.6875 0.5937499 0.75 0.5937499 + 0.6875 0.6249999 0.6875 0.5937499 0.625 0.6249999 0.625 0.5937499 0.875 0.5624999 0.8125 + 0.5937499 0.8125 0.5937499 0.8125 0.5624999 0.75 0.5937499 0.75 0.5937499 0.6875 + 0.5624999 0.75 0.5624999 0.6875 0.5937499 0.6875 0.5624999 0.625 0.5937499 0.625 + 0.5937499 0.5625 0.5624999 0.625 0.5624999 0.5625 0.5937499 0.5625 0.5624999 0.5 + 0.5937499 0.5 0.5937498 0.9375 0.5781245 1 0.5624998 0.9375 0.5937498 0.9375 0.5624999 + 0.875 0.5937499 0.875 0.5624999 0.5625 0.5312499 0.625 0.5312499 0.5625 0.5624999 0.5625 + 0.5312499 0.5 0.5624999 0.5 0.5624998 0.9375 0.5468745 1 0.5312498 0.9375 0.5624998 + 0.9375 0.5312499 0.875 0.5624999 0.875 0.5624999 0.875 0.5312499 0.8125 0.5624999 0.8125 + 0.5624999 0.8125 0.5312499 0.75 0.5624999 0.75 0.5624999 0.6875 0.5312499 0.75 0.5312499 + 0.6875 0.5624999 0.6875 0.5312499 0.625 0.5624999 0.625 0.5312499 0.8125 0.4999999 0.75 + 0.5312499 0.75 0.5312499 0.75 0.4999999 0.6875 0.5312499 0.6875 0.5312499 0.6875 + 0.4999999 0.625 0.5312499 0.625 0.5312499 0.5625 0.4999999 0.625 0.4999999 0.5625 + 0.5312499 0.5625 0.4999999 0.5 0.5312499 0.5 0.5312498 0.9375 0.5156245 1 0.4999997 + 0.9375 0.5312498 0.9375 0.4999998 0.875 0.5312499 0.875 0.5312499 0.875 0.4999999 0.8125 + 0.5312499 0.8125 0.4999999 0.5625 0.4687499 0.5 0.4999999 0.5 0.4999997 0.9375 0.4843745 + 1 0.4687497 0.9375 0.4999997 0.9375 0.4687498 0.8749999 0.4999998 0.875 0.4999998 0.875 + 0.4687499 0.8125 0.4999999 0.8125 0.4999999 0.8125 0.4687499 0.75 0.4999999 0.75 + 0.4999999 0.75 0.4687499 0.6875 0.4999999 0.6875 0.4999999 0.6875 0.4687499 0.625 + 0.4999999 0.625 0.4999999 0.5625 0.4687499 0.625 0.4687499 0.5625 0.4687499 0.8125 + 0.4374999 0.75 0.4687499 0.75 0.4687499 0.6875 0.4374999 0.75 0.4374999 0.6875 0.4687499 + 0.6875 0.4375 0.625 0.4687499 0.625 0.4687499 0.5625 0.4375 0.625 0.4374999 0.5625 + 0.4687499 0.5625 0.4374999 0.5 0.4687499 0.5 0.4687497 0.9375 0.4531245 1 0.4374997 + 0.9375 0.4687497 0.9375 0.4374998 0.8749999 0.4687498 0.8749999 0.4687498 0.8749999 + 0.4374999 0.8125 0.4687499 0.8125 0.4374999 0.5625 0.4062499 0.5 0.4374999 0.5 0.4374997 + 0.9375 0.4218745 1 0.4062497 0.9375 0.4374997 0.9375 0.4062499 0.8749999 0.4374998 + 0.8749999 0.4374998 0.8749999 0.4062499 0.8125 0.4374999 0.8125 0.4374999 0.8125 + 0.4062499 0.7499999 0.4374999 0.75 0.4374999 0.6875 0.4062499 0.7499999 0.4062499 0.6875 + 0.4374999 0.6875 0.40625 0.625 0.4375 0.625 0.4374999 0.5625 0.40625 0.625 0.4062499 + 0.5625 0.4062499 0.6875 0.3749999 0.75 0.3749999 0.6875 0.4062499 0.6875 0.375 0.625 + 0.40625 0.625 0.4062499 0.5625 0.375 0.625 0.3749999 0.5625 0.4062499 0.5 0.3749999 + 0.5625 0.3749999 0.5 0.4062497 0.9375 0.3906245 1 0.3749998 0.9375 0.4062497 0.9375 + 0.3749999 0.8749999 0.4062499 0.8749999 0.4062499 0.8749999 0.3749999 0.8124999 + 0.4062499 0.8125 0.4062499 0.8125 0.3749999 0.75 0.4062499 0.7499999 0.3749998 0.9375 + 0.3437499 0.8749999 0.3749999 0.8749999 0.3749999 0.8749999 0.3437499 0.8124999 + 0.3749999 0.8124999 0.3749999 0.8124999 0.3437499 0.7499999 0.3749999 0.75 0.3749999 + 0.6875 0.3437499 0.7499999 0.3437499 0.6875 0.3749999 0.6875 0.34375 0.625 0.375 0.625 + 0.3749999 0.5625 0.34375 0.625 0.3437499 0.5625 0.3749999 0.5 0.3437499 0.5625 0.3437499 + 0.5 0.3749998 0.9375 0.3593746 1 0.3437498 0.9375 0.3437499 0.6875 0.3125 0.625 0.34375 + 0.625 0.3437499 0.5625 0.3125 0.625 0.3125 0.5625 0.3437499 0.5 0.3125 0.5625 0.3125 0.5 + 0.3437498 0.9375 0.3281247 1 0.3124999 0.9375 0.3437498 0.9375 0.3125 0.8749999 + 0.3437499 0.8749999 0.3437499 0.8124999 0.3125 0.8749999 0.3125 0.8124999 0.3437499 + 0.8124999 0.3125 0.75 0.3437499 0.7499999 0.3437499 0.7499999 0.3125 0.6875 0.3437499 + 0.6875 0.3124999 0.9375 0.28125 0.8749999 0.3125 0.8749999 0.3125 0.8124999 0.28125 + 0.8749999 0.28125 0.8124999 0.3125 0.75 0.28125 0.8124999 0.28125 0.75 0.3125 0.75 + 0.28125 0.6875 0.3125 0.6875 0.3125 0.6875 0.28125 0.625 0.3125 0.625 0.3125 0.5625 + 0.28125 0.625 0.28125 0.5625 0.3125 0.5 0.28125 0.5625 0.28125 0.5 0.3124999 0.9375 + 0.2968747 1 0.2812499 0.9375 0.28125 0.6875 0.25 0.625 0.28125 0.625 0.28125 0.5625 0.25 + 0.625 0.25 0.5625 0.28125 0.5 0.25 0.5625 0.25 0.5 0.2812499 0.9375 0.2656248 1 0.25 + 0.9375 0.2812499 0.9375 0.25 0.8749999 0.28125 0.8749999 0.28125 0.8749999 0.25 + 0.8124999 0.28125 0.8124999 0.28125 0.75 0.25 0.8124999 0.25 0.75 0.28125 0.75 0.25 + 0.6875 0.28125 0.6875 0.25 0.8749999 0.21875 0.8124999 0.25 0.8124999 0.25 0.75 0.21875 + 0.8124999 0.21875 0.75 0.25 0.6875 0.21875 0.75 0.21875 0.6875 0.25 0.6875 0.21875 0.625 + 0.25 0.625 0.25 0.5625 0.21875 0.625 0.21875 0.5625 0.25 0.5 0.21875 0.5625 0.21875 0.5 + 0.25 0.9375 0.2343749 1 0.21875 0.9375 0.25 0.9375 0.21875 0.8749999 0.25 0.8749999 + 0.21875 0.5625 0.1875 0.625 0.1875 0.5625 0.21875 0.5 0.1875 0.5625 0.1875 0.5 0.21875 + 0.9375 0.203125 1 0.1875001 0.9375 0.21875 0.9375 0.1875 0.8749999 0.21875 0.8749999 + 0.21875 0.8749999 0.1875 0.8124999 0.21875 0.8124999 0.21875 0.75 0.1875 0.8124999 + 0.1875 0.75 0.21875 0.6875 0.1875 0.75 0.1875 0.6875 0.21875 0.6875 0.1875 0.625 0.21875 + 0.625 0.1875 0.8749999 0.15625 0.8125 0.1875 0.8124999 0.1875 0.75 0.15625 0.8125 + 0.15625 0.75 0.1875 0.6875 0.15625 0.75 0.15625 0.6875 0.1875 0.6875 0.15625 0.625 + 0.1875 0.625 0.1875 0.5625 0.15625 0.625 0.15625 0.5625 0.1875 0.5 0.15625 0.5625 + 0.15625 0.5 0.1875001 0.9375 0.1718751 1 0.1562501 0.9375 0.1875001 0.9375 0.15625 + 0.8749999 0.1875 0.8749999 0.15625 0.5625 0.125 0.625 0.125 0.5625 0.15625 0.5 0.125 + 0.5625 0.125 0.5 0.1562501 0.9375 0.1406252 1 0.1250001 0.9375 0.1562501 0.9375 0.125 + 0.875 0.15625 0.8749999 0.15625 0.8749999 0.125 0.8125 0.15625 0.8125 0.15625 0.75 0.125 + 0.8125 0.125 0.75 0.15625 0.6875 0.125 0.75 0.125 0.6875 0.15625 0.6875 0.125 0.625 + 0.15625 0.625 0.125 0.75 0.09375 0.8125 0.09375 0.75 0.125 0.6875 0.09375 0.75 0.09375 + 0.6875 0.125 0.6875 0.09375 0.625 0.125 0.625 0.125 0.5625 0.09375 0.625 0.09374994 + 0.5625 0.125 0.5 0.09374994 0.5625 0.09374994 0.5 0.1250001 0.9375 0.1093752 1 + 0.09375017 0.9375 0.1250001 0.9375 0.09375005 0.875 0.125 0.875 0.125 0.875 0.09375 + 0.8125 0.125 0.8125 0.09374994 0.5625 0.0625 0.5 0.09374994 0.5 0.09375017 0.9375 + 0.07812535 1 0.06250017 0.9375 0.09375017 0.9375 0.06250011 0.875 0.09375005 0.875 + 0.09375005 0.875 0.06250005 0.8125 0.09375 0.8125 0.09375 0.75 0.06250005 0.8125 0.0625 + 0.75 0.09375 0.6875 0.0625 0.75 0.0625 0.6875 0.09375 0.6875 0.0625 0.625 0.09375 0.625 + 0.09374994 0.5625 0.0625 0.625 0.0625 0.5625001 0.0625 0.6875 0.03125 0.75 0.03125 + 0.6875001 0.0625 0.6875 0.03125 0.625 0.0625 0.625 0.0625 0.5625001 0.03125 0.625 + 0.03124994 0.5625001 0.0625 0.5625001 0.03125 0.5 0.0625 0.5 0.06250017 0.9375 + 0.04687541 1 0.03125023 0.9375 0.06250017 0.9375 0.03125005 0.875 0.06250011 0.875 + 0.06250011 0.875 0.03125005 0.8125 0.06250005 0.8125 0.0625 0.75 0.03125005 0.8125 + 0.03125 0.75 0.03125023 0.9375 0.01562547 1 2.38419e-7 0.9375 0.03125005 0.875 + 2.38419e-7 0.9375 0 0.875 0.03125005 0.875 0 0.8125 0.03125005 0.8125 0.03125 0.75 0 + 0.8125 0 0.75 0.03125 0.6875001 0 0.75 0 0.6875001 0.03125 0.6875001 0 0.625 0.03125 + 0.625 0.03124994 0.5625001 0 0.625 0 0.5625001 0.03124994 0.5625001 0 0.5 0.03125 0.5 1 + 0.75 0.96875 0.6875001 1 0.6875001 1 0.6875001 0.96875 0.625 1 0.625 1 0.5625001 0.96875 + 0.625 0.96875 0.5625001 1 0.5625001 0.96875 0.5 1 0.5 1 0.9375 0.9843755 1 0.9687502 + 0.9375001 1 0.875 0.9687502 0.9375001 0.9687501 0.875 1 0.875 0.96875 0.8125 1 0.8125 1 + 0.75 0.96875 0.8125 0.96875 0.75 0.9687501 0.875 0.9375002 0.9375001 0.9375001 0.8750001 + 0.9687501 0.875 0.9375 0.8125001 0.96875 0.8125 0.96875 0.75 0.9375 0.8125001 0.9375 + 0.7500001 0.96875 0.6875001 0.9375 0.7500001 0.9375 0.6875001 0.96875 0.6875001 0.9375 + 0.6250001 0.96875 0.625 0.96875 0.5625001 0.9375 0.6250001 0.9375 0.5625001 0.96875 + 0.5625001 0.9375 0.5 0.96875 0.5 0.9687502 0.9375001 0.9531255 1 0.9375002 0.9375001 + 0.9375 0.6875001 0.90625 0.6250001 0.9375 0.6250001 0.9375 0.5625001 0.90625 0.6250001 + 0.90625 0.5625001 0.9375 0.5625001 0.90625 0.5 0.9375 0.5 0.9375002 0.9375001 0.9218755 + 1 0.9062501 0.9375001 0.9375001 0.8750001 0.9062501 0.9375001 0.9062501 0.8750001 + 0.9375001 0.8750001 0.90625 0.8125001 0.9375 0.8125001 0.9375 0.7500001 0.90625 + 0.8125001 0.90625 0.7500001 0.9375 0.6875001 0.90625 0.7500001 0.90625 0.6875001 + 0.9062501 0.9375001 0.875 0.8750001 0.9062501 0.8750001 0.9062501 0.8750001 0.875 + 0.8125001 0.90625 0.8125001 0.90625 0.7500001 0.875 0.8125001 0.875 0.7500001 0.90625 + 0.6875001 0.875 0.7500001 0.875 0.6875001 0.90625 0.6875001 0.875 0.6250001 0.90625 + 0.6250001 0.90625 0.5625001 0.875 0.6250001 0.875 0.5625001 0.90625 0.5625001 0.875 0.5 + 0.90625 0.5 0.9062501 0.9375001 0.8906254 1 0.8750001 0.9375001 0.875 0.6875001 0.84375 + 0.6250001 0.875 0.6250001 0.875 0.5625001 0.84375 0.6250001 0.84375 0.5625001 0.875 0.5 + 0.84375 0.5625001 0.84375 0.5 0.8750001 0.9375001 0.8593754 1 0.8437501 0.9375001 + 0.8750001 0.9375001 0.84375 0.8750001 0.875 0.8750001 0.875 0.8750001 0.84375 0.8125001 + 0.875 0.8125001 0.875 0.8125001 0.84375 0.7500001 0.875 0.7500001 0.875 0.6875001 + 0.84375 0.7500001 0.84375 0.6875001 0.84375 0.8125001 0.8125 0.8750001 0.8125 0.8125001 + 0.84375 0.7500001 0.8125 0.8125001 0.8125 0.7500001 0.84375 0.6875001 0.8125 0.7500001 + 0.8124999 0.6875001 0.84375 0.6875001 0.8125 0.6250001 0.84375 0.6250001 0.84375 + 0.5625001 0.8125 0.6250001 0.8125 0.5625001 0.84375 0.5625001 0.8125 0.5 0.84375 0.5 + 0.8437501 0.9375001 0.8281252 1 0.8125 0.9375001 0.84375 0.8750001 0.8125 0.9375001 + 0.8125 0.8750001 0.8125 0.5625001 0.78125 0.6250001 0.7812499 0.5625001 0.8125 0.5625001 + 0.7812499 0.5 0.8125 0.5 0.8125 0.9375001 0.7968752 1 0.78125 0.9375001 0.8125 0.9375001 + 0.78125 0.8750001 0.8125 0.8750001 0.8125 0.8750001 0.78125 0.8125001 0.8125 0.8125001 + 0.8125 0.8125001 0.78125 0.7500001 0.8125 0.7500001 0.8124999 0.6875001 0.78125 + 0.7500001 0.7812499 0.6875001 0.8124999 0.6875001 0.78125 0.6250001 0.8125 0.6250001 + 0.78125 0.7500001 0.75 0.8125 0.75 0.75 0.7812499 0.6875001 0.75 0.75 0.75 0.6875 + 0.78125 0.6250001 0.75 0.6875 0.75 0.625 0.7812499 0.5625001 0.75 0.625 0.75 0.5625 + 0.7812499 0.5 0.75 0.5625 0.75 0.5 0.78125 0.9375001 0.7656251 1 0.75 0.9375001 0.78125 + 0.8750001 0.75 0.9375001 0.75 0.875 0.78125 0.8125001 0.75 0.875 0.75 0.8125 0.75 0.8125 + 0.75 0.875 0.71875 0.875 0.75 0.8125 0.71875 0.8125 0.71875 0.75 0.75 0.75 0.71875 0.75 + 0.71875 0.6875 0.75 0.6875 0.71875 0.6875 0.71875 0.625 0.75 0.625 0.71875 0.625 0.71875 + 0.5625 0.75 0.5625 0.71875 0.5625 0.71875 0.5 0.75 0.875 0.75 0.9375001 0.7187499 + 0.9375001 0.71875 0.875 0.7187499 0.9375001 0.6874999 0.9375001 0.71875 0.875 0.6874999 + 0.875 0.6874999 0.8125 0.71875 0.8125 0.6874999 0.8125 0.6874999 0.75 0.71875 0.75 + 0.6874999 0.75 0.6875 0.6875 0.71875 0.6875 0.6875 0.6875 0.6875 0.625 0.71875 0.5625 + 0.71875 0.625 0.6875 0.625 0.71875 0.5625 0.6875 0.5625 0.6875 0.5 0.6875 0.6875 0.65625 + 0.6875 0.65625 0.625 0.6875 0.5625 0.6875 0.625 0.65625 0.625 0.6875 0.5 0.6875 0.5625 + 0.65625 0.5625 0.6874999 0.9375001 0.6562498 0.9375001 0.6562499 0.875 0.6874999 0.8125 + 0.6874999 0.875 0.6562499 0.875 0.6874999 0.75 0.6874999 0.8125 0.6562499 0.8125 + 0.6874999 0.75 0.6562499 0.75 0.65625 0.6875 0.6562499 0.875 0.6249999 0.875 0.6249999 + 0.8125 0.6562499 0.8125 0.6249999 0.8125 0.6249999 0.75 0.6562499 0.75 0.6249999 0.75 + 0.6249999 0.6875 0.65625 0.6875 0.6249999 0.6875 0.6249999 0.625 0.65625 0.5625 0.65625 + 0.625 0.6249999 0.625 0.65625 0.5 0.65625 0.5625 0.6249999 0.5625 0.6562498 0.9375001 + 0.6249998 0.9375 0.6249999 0.875 0.6249999 0.5625 0.6249999 0.625 0.5937499 0.625 + 0.6249999 0.5 0.6249999 0.5625 0.5937499 0.5625 0.6249998 0.9375 0.5937498 0.9375 + 0.5937499 0.875 0.6249999 0.875 0.5937499 0.875 0.5937499 0.8125 0.6249999 0.8125 + 0.5937499 0.8125 0.5937499 0.75 0.6249999 0.6875 0.6249999 0.75 0.5937499 0.75 0.6249999 + 0.6875 0.5937499 0.6875 0.5937499 0.625 0.5937499 0.875 0.5624999 0.875 0.5624999 0.8125 + 0.5937499 0.8125 0.5624999 0.8125 0.5624999 0.75 0.5937499 0.6875 0.5937499 0.75 + 0.5624999 0.75 0.5937499 0.6875 0.5624999 0.6875 0.5624999 0.625 0.5937499 0.5625 + 0.5937499 0.625 0.5624999 0.625 0.5937499 0.5625 0.5624999 0.5625 0.5624999 0.5 + 0.5937498 0.9375 0.5624998 0.9375 0.5624999 0.875 0.5624999 0.5625 0.5624999 0.625 + 0.5312499 0.625 0.5624999 0.5625 0.5312499 0.5625 0.5312499 0.5 0.5624998 0.9375 + 0.5312498 0.9375 0.5312499 0.875 0.5624999 0.875 0.5312499 0.875 0.5312499 0.8125 + 0.5624999 0.8125 0.5312499 0.8125 0.5312499 0.75 0.5624999 0.6875 0.5624999 0.75 + 0.5312499 0.75 0.5624999 0.6875 0.5312499 0.6875 0.5312499 0.625 0.5312499 0.8125 + 0.4999999 0.8125 0.4999999 0.75 0.5312499 0.75 0.4999999 0.75 0.4999999 0.6875 0.5312499 + 0.6875 0.4999999 0.6875 0.4999999 0.625 0.5312499 0.5625 0.5312499 0.625 0.4999999 0.625 + 0.5312499 0.5625 0.4999999 0.5625 0.4999999 0.5 0.5312498 0.9375 0.4999997 0.9375 + 0.4999998 0.875 0.5312499 0.875 0.4999998 0.875 0.4999999 0.8125 0.4999999 0.5625 + 0.4687499 0.5625 0.4687499 0.5 0.4999997 0.9375 0.4687497 0.9375 0.4687498 0.8749999 + 0.4999998 0.875 0.4687498 0.8749999 0.4687499 0.8125 0.4999999 0.8125 0.4687499 0.8125 + 0.4687499 0.75 0.4999999 0.75 0.4687499 0.75 0.4687499 0.6875 0.4999999 0.6875 0.4687499 + 0.6875 0.4687499 0.625 0.4999999 0.5625 0.4999999 0.625 0.4687499 0.625 0.4687499 0.8125 + 0.4374999 0.8125 0.4374999 0.75 0.4687499 0.6875 0.4687499 0.75 0.4374999 0.75 0.4687499 + 0.6875 0.4374999 0.6875 0.4375 0.625 0.4687499 0.5625 0.4687499 0.625 0.4375 0.625 + 0.4687499 0.5625 0.4374999 0.5625 0.4374999 0.5 0.4687497 0.9375 0.4374997 0.9375 + 0.4374998 0.8749999 0.4687498 0.8749999 0.4374998 0.8749999 0.4374999 0.8125 0.4374999 + 0.5625 0.4062499 0.5625 0.4062499 0.5 0.4374997 0.9375 0.4062497 0.9375 0.4062499 + 0.8749999 0.4374998 0.8749999 0.4062499 0.8749999 0.4062499 0.8125 0.4374999 0.8125 + 0.4062499 0.8125 0.4062499 0.7499999 0.4374999 0.6875 0.4374999 0.75 0.4062499 0.7499999 + 0.4374999 0.6875 0.4062499 0.6875 0.40625 0.625 0.4374999 0.5625 0.4375 0.625 0.40625 + 0.625 0.4062499 0.6875 0.4062499 0.7499999 0.3749999 0.75 0.4062499 0.6875 0.3749999 + 0.6875 0.375 0.625 0.4062499 0.5625 0.40625 0.625 0.375 0.625 0.4062499 0.5 0.4062499 + 0.5625 0.3749999 0.5625 0.4062497 0.9375 0.3749998 0.9375 0.3749999 0.8749999 0.4062499 + 0.8749999 0.3749999 0.8749999 0.3749999 0.8124999 0.4062499 0.8125 0.3749999 0.8124999 + 0.3749999 0.75 0.3749998 0.9375 0.3437498 0.9375 0.3437499 0.8749999 0.3749999 0.8749999 + 0.3437499 0.8749999 0.3437499 0.8124999 0.3749999 0.8124999 0.3437499 0.8124999 + 0.3437499 0.7499999 0.3749999 0.6875 0.3749999 0.75 0.3437499 0.7499999 0.3749999 0.6875 + 0.3437499 0.6875 0.34375 0.625 0.3749999 0.5625 0.375 0.625 0.34375 0.625 0.3749999 0.5 + 0.3749999 0.5625 0.3437499 0.5625 0.3437499 0.6875 0.3125 0.6875 0.3125 0.625 0.3437499 + 0.5625 0.34375 0.625 0.3125 0.625 0.3437499 0.5 0.3437499 0.5625 0.3125 0.5625 0.3437498 + 0.9375 0.3124999 0.9375 0.3125 0.8749999 0.3437499 0.8124999 0.3437499 0.8749999 0.3125 + 0.8749999 0.3437499 0.8124999 0.3125 0.8124999 0.3125 0.75 0.3437499 0.7499999 0.3125 + 0.75 0.3125 0.6875 0.3124999 0.9375 0.2812499 0.9375 0.28125 0.8749999 0.3125 0.8124999 + 0.3125 0.8749999 0.28125 0.8749999 0.3125 0.75 0.3125 0.8124999 0.28125 0.8124999 0.3125 + 0.75 0.28125 0.75 0.28125 0.6875 0.3125 0.6875 0.28125 0.6875 0.28125 0.625 0.3125 + 0.5625 0.3125 0.625 0.28125 0.625 0.3125 0.5 0.3125 0.5625 0.28125 0.5625 0.28125 0.6875 + 0.25 0.6875 0.25 0.625 0.28125 0.5625 0.28125 0.625 0.25 0.625 0.28125 0.5 0.28125 + 0.5625 0.25 0.5625 0.2812499 0.9375 0.25 0.9375 0.25 0.8749999 0.28125 0.8749999 0.25 + 0.8749999 0.25 0.8124999 0.28125 0.75 0.28125 0.8124999 0.25 0.8124999 0.28125 0.75 0.25 + 0.75 0.25 0.6875 0.25 0.8749999 0.21875 0.8749999 0.21875 0.8124999 0.25 0.75 0.25 + 0.8124999 0.21875 0.8124999 0.25 0.6875 0.25 0.75 0.21875 0.75 0.25 0.6875 0.21875 + 0.6875 0.21875 0.625 0.25 0.5625 0.25 0.625 0.21875 0.625 0.25 0.5 0.25 0.5625 0.21875 + 0.5625 0.25 0.9375 0.21875 0.9375 0.21875 0.8749999 0.21875 0.5625 0.21875 0.625 0.1875 + 0.625 0.21875 0.5 0.21875 0.5625 0.1875 0.5625 0.21875 0.9375 0.1875001 0.9375 0.1875 + 0.8749999 0.21875 0.8749999 0.1875 0.8749999 0.1875 0.8124999 0.21875 0.75 0.21875 + 0.8124999 0.1875 0.8124999 0.21875 0.6875 0.21875 0.75 0.1875 0.75 0.21875 0.6875 0.1875 + 0.6875 0.1875 0.625 0.1875 0.8749999 0.15625 0.8749999 0.15625 0.8125 0.1875 0.75 0.1875 + 0.8124999 0.15625 0.8125 0.1875 0.6875 0.1875 0.75 0.15625 0.75 0.1875 0.6875 0.15625 + 0.6875 0.15625 0.625 0.1875 0.5625 0.1875 0.625 0.15625 0.625 0.1875 0.5 0.1875 0.5625 + 0.15625 0.5625 0.1875001 0.9375 0.1562501 0.9375 0.15625 0.8749999 0.15625 0.5625 + 0.15625 0.625 0.125 0.625 0.15625 0.5 0.15625 0.5625 0.125 0.5625 0.1562501 0.9375 + 0.1250001 0.9375 0.125 0.875 0.15625 0.8749999 0.125 0.875 0.125 0.8125 0.15625 0.75 + 0.15625 0.8125 0.125 0.8125 0.15625 0.6875 0.15625 0.75 0.125 0.75 0.15625 0.6875 0.125 + 0.6875 0.125 0.625 0.125 0.75 0.125 0.8125 0.09375 0.8125 0.125 0.6875 0.125 0.75 + 0.09375 0.75 0.125 0.6875 0.09375 0.6875 0.09375 0.625 0.125 0.5625 0.125 0.625 0.09375 + 0.625 0.125 0.5 0.125 0.5625 0.09374994 0.5625 0.1250001 0.9375 0.09375017 0.9375 + 0.09375005 0.875 0.125 0.875 0.09375005 0.875 0.09375 0.8125 0.09374994 0.5625 0.0625 + 0.5625001 0.0625 0.5 0.09375017 0.9375 0.06250017 0.9375 0.06250011 0.875 0.09375005 + 0.875 0.06250011 0.875 0.06250005 0.8125 0.09375 0.75 0.09375 0.8125 0.06250005 0.8125 + 0.09375 0.6875 0.09375 0.75 0.0625 0.75 0.09375 0.6875 0.0625 0.6875 0.0625 0.625 + 0.09374994 0.5625 0.09375 0.625 0.0625 0.625 0.0625 0.6875 0.0625 0.75 0.03125 0.75 + 0.0625 0.6875 0.03125 0.6875001 0.03125 0.625 0.0625 0.5625001 0.0625 0.625 0.03125 + 0.625 0.0625 0.5625001 0.03124994 0.5625001 0.03125 0.5 0.06250017 0.9375 0.03125023 + 0.9375 0.03125005 0.875 0.06250011 0.875 0.03125005 0.875 0.03125005 0.8125 0.0625 0.75 + 0.06250005 0.8125 0.03125005 0.8125 0.03125005 0.875 0.03125023 0.9375 2.38419e-7 0.9375 + 0.03125005 0.875 0 0.875 0 0.8125 0.03125 0.75 0.03125005 0.8125 0 0.8125 0.03125 + 0.6875001 0.03125 0.75 0 0.75 0.03125 0.6875001 0 0.6875001 0 0.625 0.03124994 0.5625001 + 0.03125 0.625 0 0.625 0.03124994 0.5625001 0 0.5625001 0 0.5 1 0.75 0.96875 0.75 0.96875 + 0.6875001 1 0.6875001 0.96875 0.6875001 0.96875 0.625 1 0.5625001 1 0.625 0.96875 0.625 + 1 0.5625001 0.96875 0.5625001 0.96875 0.5 1 0.875 1 0.9375 0.9687502 0.9375001 1 0.875 + 0.9687501 0.875 0.96875 0.8125 1 0.75 1 0.8125 0.96875 0.8125 0.9687501 0.875 0.9687502 + 0.9375001 0.9375002 0.9375001 0.9687501 0.875 0.9375001 0.8750001 0.9375 0.8125001 + 0.96875 0.75 0.96875 0.8125 0.9375 0.8125001 0.96875 0.6875001 0.96875 0.75 0.9375 + 0.7500001 0.96875 0.6875001 0.9375 0.6875001 0.9375 0.6250001 0.96875 0.5625001 0.96875 + 0.625 0.9375 0.6250001 0.96875 0.5625001 0.9375 0.5625001 0.9375 0.5 0.9375 0.6875001 + 0.90625 0.6875001 0.90625 0.6250001 0.9375 0.5625001 0.9375 0.6250001 0.90625 0.6250001 + 0.9375 0.5625001 0.90625 0.5625001 0.90625 0.5 0.9375001 0.8750001 0.9375002 0.9375001 + 0.9062501 0.9375001 0.9375001 0.8750001 0.9062501 0.8750001 0.90625 0.8125001 0.9375 + 0.7500001 0.9375 0.8125001 0.90625 0.8125001 0.9375 0.6875001 0.9375 0.7500001 0.90625 + 0.7500001 0.9062501 0.9375001 0.8750001 0.9375001 0.875 0.8750001 0.9062501 0.8750001 + 0.875 0.8750001 0.875 0.8125001 0.90625 0.7500001 0.90625 0.8125001 0.875 0.8125001 + 0.90625 0.6875001 0.90625 0.7500001 0.875 0.7500001 0.90625 0.6875001 0.875 0.6875001 + 0.875 0.6250001 0.90625 0.5625001 0.90625 0.6250001 0.875 0.6250001 0.90625 0.5625001 + 0.875 0.5625001 0.875 0.5 0.875 0.6875001 0.84375 0.6875001 0.84375 0.6250001 0.875 + 0.5625001 0.875 0.6250001 0.84375 0.6250001 0.875 0.5 0.875 0.5625001 0.84375 0.5625001 + 0.8750001 0.9375001 0.8437501 0.9375001 0.84375 0.8750001 0.875 0.8750001 0.84375 + 0.8750001 0.84375 0.8125001 0.875 0.8125001 0.84375 0.8125001 0.84375 0.7500001 0.875 + 0.6875001 0.875 0.7500001 0.84375 0.7500001 0.84375 0.8125001 0.84375 0.8750001 0.8125 + 0.8750001 0.84375 0.7500001 0.84375 0.8125001 0.8125 0.8125001 0.84375 0.6875001 0.84375 + 0.7500001 0.8125 0.7500001 0.84375 0.6875001 0.8124999 0.6875001 0.8125 0.6250001 + 0.84375 0.5625001 0.84375 0.6250001 0.8125 0.6250001 0.84375 0.5625001 0.8125 0.5625001 + 0.8125 0.5 0.84375 0.8750001 0.8437501 0.9375001 0.8125 0.9375001 0.8125 0.5625001 + 0.8125 0.6250001 0.78125 0.6250001 0.8125 0.5625001 0.7812499 0.5625001 0.7812499 0.5 + 0.8125 0.9375001 0.78125 0.9375001 0.78125 0.8750001 0.8125 0.8750001 0.78125 0.8750001 + 0.78125 0.8125001 0.8125 0.8125001 0.78125 0.8125001 0.78125 0.7500001 0.8124999 + 0.6875001 0.8125 0.7500001 0.78125 0.7500001 0.8124999 0.6875001 0.7812499 0.6875001 + 0.78125 0.6250001 0.78125 0.7500001 0.78125 0.8125001 0.75 0.8125 0.7812499 0.6875001 + 0.78125 0.7500001 0.75 0.75 0.78125 0.6250001 0.7812499 0.6875001 0.75 0.6875 0.7812499 + 0.5625001 0.78125 0.6250001 0.75 0.625 0.7812499 0.5 0.7812499 0.5625001 0.75 0.5625 + 0.78125 0.8750001 0.78125 0.9375001 0.75 0.9375001 0.78125 0.8125001 0.78125 0.8750001 + 0.75 0.875 - - + + - + - - - -

2 0 0 9 0 1 10 0 2 2 1 3 11 1 4 3 1 5 3 2 6 12 2 7 4 2 8 4 3 9 13 3 10 5 3 11 5 4 12 14 4 13 6 4 14 6 5 15 15 5 16 7 5 17 0 6 18 160 6 19 8 6 20 1 7 21 8 7 22 9 7 23 9 8 24 16 8 25 17 8 26 9 9 27 18 9 28 10 9 29 10 10 30 19 10 31 11 10 32 11 11 33 20 11 34 12 11 35 12 12 36 21 12 37 13 12 38 14 13 39 21 13 40 22 13 41 14 14 42 23 14 43 15 14 44 8 15 45 160 15 46 16 15 47 20 16 48 29 16 49 21 16 50 22 17 51 29 17 52 30 17 53 23 18 54 30 18 55 31 18 56 16 19 57 160 19 58 24 19 59 16 20 60 25 20 61 17 20 62 18 21 63 25 21 64 26 21 65 19 22 66 26 22 67 27 22 68 19 23 69 28 23 70 20 23 71 25 24 72 34 24 73 26 24 74 26 25 75 35 25 76 27 25 77 27 26 78 36 26 79 28 26 80 28 27 81 37 27 82 29 27 83 30 28 84 37 28 85 38 28 86 31 29 87 38 29 88 39 29 89 24 30 90 160 30 91 32 30 92 24 31 93 33 31 94 25 31 95 38 32 96 45 32 97 46 32 98 39 33 99 46 33 100 47 33 101 32 34 102 160 34 103 40 34 104 32 35 105 41 35 106 33 35 107 33 36 108 42 36 109 34 36 110 34 37 111 43 37 112 35 37 113 36 38 114 43 38 115 44 38 116 36 39 117 45 39 118 37 39 119 41 40 120 50 40 121 42 40 122 42 41 123 51 41 124 43 41 125 44 42 126 51 42 127 52 42 128 44 43 129 53 43 130 45 43 131 46 44 132 53 44 133 54 44 134 46 45 135 55 45 136 47 45 137 40 46 138 160 46 139 48 46 140 40 47 141 49 47 142 41 47 143 54 48 144 61 48 145 62 48 146 54 49 147 63 49 148 55 49 149 48 50 150 160 50 151 56 50 152 48 51 153 57 51 154 49 51 155 49 52 156 58 52 157 50 52 158 50 53 159 59 53 160 51 53 161 52 54 162 59 54 163 60 54 164 52 55 165 61 55 166 53 55 167 58 56 168 67 56 169 59 56 170 59 57 171 68 57 172 60 57 173 60 58 174 69 58 175 61 58 176 62 59 177 69 59 178 70 59 179 62 60 180 71 60 181 63 60 182 56 61 183 160 61 184 64 61 185 56 62 186 65 62 187 57 62 188 57 63 189 66 63 190 58 63 191 70 64 192 79 64 193 71 64 194 64 65 195 160 65 196 72 65 197 64 66 198 73 66 199 65 66 200 65 67 201 74 67 202 66 67 203 66 68 204 75 68 205 67 68 206 67 69 207 76 69 208 68 69 209 68 70 210 77 70 211 69 70 212 70 71 213 77 71 214 78 71 215 74 72 216 83 72 217 75 72 218 76 73 219 83 73 220 84 73 221 76 74 222 85 74 223 77 74 224 78 75 225 85 75 226 86 75 227 78 76 228 87 76 229 79 76 230 72 77 231 160 77 232 80 77 233 72 78 234 81 78 235 73 78 236 73 79 237 82 79 238 74 79 239 86 80 240 95 80 241 87 80 242 80 81 243 160 81 244 88 81 245 80 82 246 89 82 247 81 82 248 81 83 249 90 83 250 82 83 251 82 84 252 91 84 253 83 84 254 84 85 255 91 85 256 92 85 257 84 86 258 93 86 259 85 86 260 86 87 261 93 87 262 94 87 263 92 88 264 99 88 265 100 88 266 92 89 267 101 89 268 93 89 269 94 90 270 101 90 271 102 90 272 95 91 273 102 91 274 103 91 275 88 92 276 160 92 277 96 92 278 88 93 279 97 93 280 89 93 281 89 94 282 98 94 283 90 94 284 90 95 285 99 95 286 91 95 287 96 96 288 105 96 289 97 96 290 97 97 291 106 97 292 98 97 293 98 98 294 107 98 295 99 98 296 100 99 297 107 99 298 108 99 299 100 100 300 109 100 301 101 100 302 102 101 303 109 101 304 110 101 305 103 102 306 110 102 307 111 102 308 96 103 309 160 103 310 104 103 311 108 104 312 117 104 313 109 104 314 110 105 315 117 105 316 118 105 317 111 106 318 118 106 319 119 106 320 104 107 321 160 107 322 112 107 323 104 108 324 113 108 325 105 108 326 106 109 327 113 109 328 114 109 329 106 110 330 115 110 331 107 110 332 107 111 333 116 111 334 108 111 335 112 112 336 121 112 337 113 112 338 114 113 339 121 113 340 122 113 341 115 114 342 122 114 343 123 114 344 115 115 345 124 115 346 116 115 347 116 116 348 125 116 349 117 116 350 118 117 351 125 117 352 126 117 353 119 118 354 126 118 355 127 118 356 112 119 357 160 119 358 120 119 359 124 120 360 133 120 361 125 120 362 126 121 363 133 121 364 134 121 365 127 122 366 134 122 367 135 122 368 120 123 369 160 123 370 128 123 371 120 124 372 129 124 373 121 124 374 121 125 375 130 125 376 122 125 377 123 126 378 130 126 379 131 126 380 123 127 381 132 127 382 124 127 383 129 128 384 138 128 385 130 128 386 131 129 387 138 129 388 139 129 389 132 130 390 139 130 391 140 130 392 132 131 393 141 131 394 133 131 395 134 132 396 141 132 397 142 132 398 135 133 399 142 133 400 143 133 401 128 134 402 160 134 403 136 134 404 128 135 405 137 135 406 129 135 407 142 136 408 149 136 409 150 136 410 143 137 411 150 137 412 151 137 413 136 138 414 160 138 415 144 138 416 136 139 417 145 139 418 137 139 419 137 140 420 146 140 421 138 140 422 139 141 423 146 141 424 147 141 425 140 142 426 147 142 427 148 142 428 140 143 429 149 143 430 141 143 431 145 144 432 154 144 433 146 144 434 147 145 435 154 145 436 155 145 437 148 146 438 155 146 439 156 146 440 148 147 441 157 147 442 149 147 443 150 148 444 157 148 445 158 148 446 151 149 447 158 149 448 159 149 449 144 150 450 160 150 451 152 150 452 144 151 453 153 151 454 145 151 455 158 152 456 166 152 457 167 152 458 159 153 459 167 153 460 168 153 461 152 154 462 160 154 463 161 154 464 152 155 465 162 155 466 153 155 467 153 156 468 163 156 469 154 156 470 155 157 471 163 157 472 164 157 473 156 158 474 164 158 475 165 158 476 156 159 477 166 159 478 157 159 479 164 160 480 171 160 481 172 160 482 165 161 483 172 161 484 173 161 485 165 162 486 174 162 487 166 162 488 167 163 489 174 163 490 175 163 491 168 164 492 175 164 493 176 164 494 161 165 495 160 165 496 169 165 497 161 166 498 170 166 499 162 166 500 162 167 501 171 167 502 163 167 503 175 168 504 184 168 505 176 168 506 169 169 507 160 169 508 177 169 509 169 170 510 178 170 511 170 170 512 170 171 513 179 171 514 171 171 515 172 172 516 179 172 517 180 172 518 173 173 519 180 173 520 181 173 521 173 174 522 182 174 523 174 174 524 175 175 525 182 175 526 183 175 527 181 176 528 188 176 529 189 176 530 181 177 531 190 177 532 182 177 533 183 178 534 190 178 535 191 178 536 183 179 537 192 179 538 184 179 539 177 180 540 160 180 541 185 180 542 177 181 543 186 181 544 178 181 545 178 182 546 187 182 547 179 182 548 180 183 549 187 183 550 188 183 551 185 184 552 160 184 553 193 184 554 186 185 555 193 185 556 194 185 557 186 186 558 195 186 559 187 186 560 188 187 561 195 187 562 196 187 563 189 188 564 196 188 565 197 188 566 189 189 567 198 189 568 190 189 569 191 190 570 198 190 571 199 190 572 191 191 573 200 191 574 192 191 575 196 192 576 205 192 577 197 192 578 197 193 579 206 193 580 198 193 581 199 194 582 206 194 583 207 194 584 199 195 585 208 195 586 200 195 587 193 196 588 160 196 589 201 196 590 194 197 591 201 197 592 202 197 593 194 198 594 203 198 595 195 198 596 196 199 597 203 199 598 204 199 599 202 200 600 209 200 601 210 200 602 202 201 603 211 201 604 203 201 605 204 202 606 211 202 607 212 202 608 205 203 609 212 203 610 213 203 611 205 204 612 214 204 613 206 204 614 207 205 615 214 205 616 215 205 617 207 206 618 216 206 619 208 206 620 201 207 621 160 207 622 209 207 623 213 208 624 222 208 625 214 208 626 215 209 627 222 209 628 223 209 629 215 210 630 224 210 631 216 210 632 209 211 633 160 211 634 217 211 635 210 212 636 217 212 637 218 212 638 210 213 639 219 213 640 211 213 641 212 214 642 219 214 643 220 214 644 213 215 645 220 215 646 221 215 647 217 216 648 226 216 649 218 216 650 218 217 651 227 217 652 219 217 653 220 218 654 227 218 655 228 218 656 221 219 657 228 219 658 229 219 659 221 220 660 230 220 661 222 220 662 223 221 663 230 221 664 231 221 665 223 222 666 232 222 667 224 222 668 217 223 669 160 223 670 225 223 671 229 224 672 238 224 673 230 224 674 231 225 675 238 225 676 239 225 677 232 226 678 239 226 679 240 226 680 225 227 681 160 227 682 233 227 683 225 228 684 234 228 685 226 228 686 226 229 687 235 229 688 227 229 689 227 230 690 236 230 691 228 230 692 229 231 693 236 231 694 237 231 695 235 232 696 242 232 697 243 232 698 236 233 699 243 233 700 244 233 701 237 234 702 244 234 703 245 234 704 237 235 705 246 235 706 238 235 707 239 236 708 246 236 709 247 236 710 239 237 711 248 237 712 240 237 713 233 238 714 160 238 715 241 238 716 234 239 717 241 239 718 242 239 719 247 240 720 254 240 721 255 240 722 247 241 723 256 241 724 248 241 725 241 242 726 160 242 727 249 242 728 241 243 729 250 243 730 242 243 731 242 244 732 251 244 733 243 244 734 243 245 735 252 245 736 244 245 737 245 246 738 252 246 739 253 246 740 245 247 741 254 247 742 246 247 743 252 248 744 2 248 745 3 248 746 253 249 747 3 249 748 4 249 749 254 250 750 4 250 751 5 250 752 255 251 753 5 251 754 6 251 755 256 252 756 6 252 757 7 252 758 249 253 759 160 253 760 0 253 761 250 254 762 0 254 763 1 254 764 251 255 765 1 255 766 2 255 767 2 256 768 1 256 769 9 256 770 2 257 771 10 257 772 11 257 773 3 258 774 11 258 775 12 258 776 4 259 777 12 259 778 13 259 779 5 260 780 13 260 781 14 260 782 6 261 783 14 261 784 15 261 785 1 262 786 0 262 787 8 262 788 9 263 789 8 263 790 16 263 791 9 264 792 17 264 793 18 264 794 10 265 795 18 265 796 19 265 797 11 266 798 19 266 799 20 266 800 12 267 801 20 267 802 21 267 803 14 268 804 13 268 805 21 268 806 14 269 807 22 269 808 23 269 809 20 270 810 28 270 811 29 270 812 22 271 813 21 271 814 29 271 815 23 272 816 22 272 817 30 272 818 16 273 819 24 273 820 25 273 821 18 274 822 17 274 823 25 274 824 19 275 825 18 275 826 26 275 827 19 276 828 27 276 829 28 276 830 25 277 831 33 277 832 34 277 833 26 278 834 34 278 835 35 278 836 27 279 837 35 279 838 36 279 839 28 280 840 36 280 841 37 280 842 30 281 843 29 281 844 37 281 845 31 282 846 30 282 847 38 282 848 24 283 849 32 283 850 33 283 851 38 284 852 37 284 853 45 284 854 39 285 855 38 285 856 46 285 857 32 286 858 40 286 859 41 286 860 33 287 861 41 287 862 42 287 863 34 288 864 42 288 865 43 288 866 36 289 867 35 289 868 43 289 869 36 290 870 44 290 871 45 290 872 41 291 873 49 291 874 50 291 875 42 292 876 50 292 877 51 292 878 44 293 879 43 293 880 51 293 881 44 294 882 52 294 883 53 294 884 46 295 885 45 295 886 53 295 887 46 296 888 54 296 889 55 296 890 40 297 891 48 297 892 49 297 893 54 298 894 53 298 895 61 298 896 54 299 897 62 299 898 63 299 899 48 300 900 56 300 901 57 300 902 49 301 903 57 301 904 58 301 905 50 302 906 58 302 907 59 302 908 52 303 909 51 303 910 59 303 911 52 304 912 60 304 913 61 304 914 58 305 915 66 305 916 67 305 917 59 306 918 67 306 919 68 306 920 60 307 921 68 307 922 69 307 923 62 308 924 61 308 925 69 308 926 62 309 927 70 309 928 71 309 929 56 310 930 64 310 931 65 310 932 57 311 933 65 311 934 66 311 935 70 312 936 78 312 937 79 312 938 64 313 939 72 313 940 73 313 941 65 314 942 73 314 943 74 314 944 66 315 945 74 315 946 75 315 947 67 316 948 75 316 949 76 316 950 68 317 951 76 317 952 77 317 953 70 318 954 69 318 955 77 318 956 74 319 957 82 319 958 83 319 959 76 320 960 75 320 961 83 320 962 76 321 963 84 321 964 85 321 965 78 322 966 77 322 967 85 322 968 78 323 969 86 323 970 87 323 971 72 324 972 80 324 973 81 324 974 73 325 975 81 325 976 82 325 977 86 326 978 94 326 979 95 326 980 80 327 981 88 327 982 89 327 983 81 328 984 89 328 985 90 328 986 82 329 987 90 329 988 91 329 989 84 330 990 83 330 991 91 330 992 84 331 993 92 331 994 93 331 995 86 332 996 85 332 997 93 332 998 92 333 999 91 333 1000 99 333 1001 92 334 1002 100 334 1003 101 334 1004 94 335 1005 93 335 1006 101 335 1007 95 336 1008 94 336 1009 102 336 1010 88 337 1011 96 337 1012 97 337 1013 89 338 1014 97 338 1015 98 338 1016 90 339 1017 98 339 1018 99 339 1019 96 340 1020 104 340 1021 105 340 1022 97 341 1023 105 341 1024 106 341 1025 98 342 1026 106 342 1027 107 342 1028 100 343 1029 99 343 1030 107 343 1031 100 344 1032 108 344 1033 109 344 1034 102 345 1035 101 345 1036 109 345 1037 103 346 1038 102 346 1039 110 346 1040 108 347 1041 116 347 1042 117 347 1043 110 348 1044 109 348 1045 117 348 1046 111 349 1047 110 349 1048 118 349 1049 104 350 1050 112 350 1051 113 350 1052 106 351 1053 105 351 1054 113 351 1055 106 352 1056 114 352 1057 115 352 1058 107 353 1059 115 353 1060 116 353 1061 112 354 1062 120 354 1063 121 354 1064 114 355 1065 113 355 1066 121 355 1067 115 356 1068 114 356 1069 122 356 1070 115 357 1071 123 357 1072 124 357 1073 116 358 1074 124 358 1075 125 358 1076 118 359 1077 117 359 1078 125 359 1079 119 360 1080 118 360 1081 126 360 1082 124 361 1083 132 361 1084 133 361 1085 126 362 1086 125 362 1087 133 362 1088 127 363 1089 126 363 1090 134 363 1091 120 364 1092 128 364 1093 129 364 1094 121 365 1095 129 365 1096 130 365 1097 123 366 1098 122 366 1099 130 366 1100 123 367 1101 131 367 1102 132 367 1103 129 368 1104 137 368 1105 138 368 1106 131 369 1107 130 369 1108 138 369 1109 132 370 1110 131 370 1111 139 370 1112 132 371 1113 140 371 1114 141 371 1115 134 372 1116 133 372 1117 141 372 1118 135 373 1119 134 373 1120 142 373 1121 128 374 1122 136 374 1123 137 374 1124 142 375 1125 141 375 1126 149 375 1127 143 376 1128 142 376 1129 150 376 1130 136 377 1131 144 377 1132 145 377 1133 137 378 1134 145 378 1135 146 378 1136 139 379 1137 138 379 1138 146 379 1139 140 380 1140 139 380 1141 147 380 1142 140 381 1143 148 381 1144 149 381 1145 145 382 1146 153 382 1147 154 382 1148 147 383 1149 146 383 1150 154 383 1151 148 384 1152 147 384 1153 155 384 1154 148 385 1155 156 385 1156 157 385 1157 150 386 1158 149 386 1159 157 386 1160 151 387 1161 150 387 1162 158 387 1163 144 388 1164 152 388 1165 153 388 1166 158 389 1167 157 389 1168 166 389 1169 159 390 1170 158 390 1171 167 390 1172 152 391 1173 161 391 1174 162 391 1175 153 392 1176 162 392 1177 163 392 1178 155 393 1179 154 393 1180 163 393 1181 156 394 1182 155 394 1183 164 394 1184 156 395 1185 165 395 1186 166 395 1187 164 396 1188 163 396 1189 171 396 1190 165 397 1191 164 397 1192 172 397 1193 165 398 1194 173 398 1195 174 398 1196 167 399 1197 166 399 1198 174 399 1199 168 400 1200 167 400 1201 175 400 1202 161 401 1203 169 401 1204 170 401 1205 162 402 1206 170 402 1207 171 402 1208 175 403 1209 183 403 1210 184 403 1211 169 404 1212 177 404 1213 178 404 1214 170 405 1215 178 405 1216 179 405 1217 172 406 1218 171 406 1219 179 406 1220 173 407 1221 172 407 1222 180 407 1223 173 408 1224 181 408 1225 182 408 1226 175 409 1227 174 409 1228 182 409 1229 181 410 1230 180 410 1231 188 410 1232 181 411 1233 189 411 1234 190 411 1235 183 412 1236 182 412 1237 190 412 1238 183 413 1239 191 413 1240 192 413 1241 177 414 1242 185 414 1243 186 414 1244 178 415 1245 186 415 1246 187 415 1247 180 416 1248 179 416 1249 187 416 1250 186 417 1251 185 417 1252 193 417 1253 186 418 1254 194 418 1255 195 418 1256 188 419 1257 187 419 1258 195 419 1259 189 420 1260 188 420 1261 196 420 1262 189 421 1263 197 421 1264 198 421 1265 191 422 1266 190 422 1267 198 422 1268 191 423 1269 199 423 1270 200 423 1271 196 424 1272 204 424 1273 205 424 1274 197 425 1275 205 425 1276 206 425 1277 199 426 1278 198 426 1279 206 426 1280 199 427 1281 207 427 1282 208 427 1283 194 428 1284 193 428 1285 201 428 1286 194 429 1287 202 429 1288 203 429 1289 196 430 1290 195 430 1291 203 430 1292 202 431 1293 201 431 1294 209 431 1295 202 432 1296 210 432 1297 211 432 1298 204 433 1299 203 433 1300 211 433 1301 205 434 1302 204 434 1303 212 434 1304 205 435 1305 213 435 1306 214 435 1307 207 436 1308 206 436 1309 214 436 1310 207 437 1311 215 437 1312 216 437 1313 213 438 1314 221 438 1315 222 438 1316 215 439 1317 214 439 1318 222 439 1319 215 440 1320 223 440 1321 224 440 1322 210 441 1323 209 441 1324 217 441 1325 210 442 1326 218 442 1327 219 442 1328 212 443 1329 211 443 1330 219 443 1331 213 444 1332 212 444 1333 220 444 1334 217 445 1335 225 445 1336 226 445 1337 218 446 1338 226 446 1339 227 446 1340 220 447 1341 219 447 1342 227 447 1343 221 448 1344 220 448 1345 228 448 1346 221 449 1347 229 449 1348 230 449 1349 223 450 1350 222 450 1351 230 450 1352 223 451 1353 231 451 1354 232 451 1355 229 452 1356 237 452 1357 238 452 1358 231 453 1359 230 453 1360 238 453 1361 232 454 1362 231 454 1363 239 454 1364 225 455 1365 233 455 1366 234 455 1367 226 456 1368 234 456 1369 235 456 1370 227 457 1371 235 457 1372 236 457 1373 229 458 1374 228 458 1375 236 458 1376 235 459 1377 234 459 1378 242 459 1379 236 460 1380 235 460 1381 243 460 1382 237 461 1383 236 461 1384 244 461 1385 237 462 1386 245 462 1387 246 462 1388 239 463 1389 238 463 1390 246 463 1391 239 464 1392 247 464 1393 248 464 1394 234 465 1395 233 465 1396 241 465 1397 247 466 1398 246 466 1399 254 466 1400 247 467 1401 255 467 1402 256 467 1403 241 468 1404 249 468 1405 250 468 1406 242 469 1407 250 469 1408 251 469 1409 243 470 1410 251 470 1411 252 470 1412 245 471 1413 244 471 1414 252 471 1415 245 472 1416 253 472 1417 254 472 1418 252 473 1419 251 473 1420 2 473 1421 253 474 1422 252 474 1423 3 474 1424 254 475 1425 253 475 1426 4 475 1427 255 476 1428 254 476 1429 5 476 1430 256 477 1431 255 477 1432 6 477 1433 250 478 1434 249 478 1435 0 478 1436 251 479 1437 250 479 1438 1 479 1439

+ + + +

2 0 0 9 0 1 10 0 2 2 1 3 11 1 4 3 1 5 3 2 6 12 2 7 4 2 8 4 3 9 13 3 10 5 3 11 5 4 12 14 + 4 13 6 4 14 6 5 15 15 5 16 7 5 17 0 6 18 160 6 19 8 6 20 1 7 21 8 7 22 9 7 23 9 8 24 16 + 8 25 17 8 26 9 9 27 18 9 28 10 9 29 10 10 30 19 10 31 11 10 32 11 11 33 20 11 34 12 11 + 35 12 12 36 21 12 37 13 12 38 14 13 39 21 13 40 22 13 41 14 14 42 23 14 43 15 14 44 8 15 + 45 160 15 46 16 15 47 20 16 48 29 16 49 21 16 50 22 17 51 29 17 52 30 17 53 23 18 54 30 + 18 55 31 18 56 16 19 57 160 19 58 24 19 59 16 20 60 25 20 61 17 20 62 18 21 63 25 21 64 + 26 21 65 19 22 66 26 22 67 27 22 68 19 23 69 28 23 70 20 23 71 25 24 72 34 24 73 26 24 + 74 26 25 75 35 25 76 27 25 77 27 26 78 36 26 79 28 26 80 28 27 81 37 27 82 29 27 83 30 + 28 84 37 28 85 38 28 86 31 29 87 38 29 88 39 29 89 24 30 90 160 30 91 32 30 92 24 31 93 + 33 31 94 25 31 95 38 32 96 45 32 97 46 32 98 39 33 99 46 33 100 47 33 101 32 34 102 160 + 34 103 40 34 104 32 35 105 41 35 106 33 35 107 33 36 108 42 36 109 34 36 110 34 37 111 + 43 37 112 35 37 113 36 38 114 43 38 115 44 38 116 36 39 117 45 39 118 37 39 119 41 40 + 120 50 40 121 42 40 122 42 41 123 51 41 124 43 41 125 44 42 126 51 42 127 52 42 128 44 + 43 129 53 43 130 45 43 131 46 44 132 53 44 133 54 44 134 46 45 135 55 45 136 47 45 137 + 40 46 138 160 46 139 48 46 140 40 47 141 49 47 142 41 47 143 54 48 144 61 48 145 62 48 + 146 54 49 147 63 49 148 55 49 149 48 50 150 160 50 151 56 50 152 48 51 153 57 51 154 49 + 51 155 49 52 156 58 52 157 50 52 158 50 53 159 59 53 160 51 53 161 52 54 162 59 54 163 + 60 54 164 52 55 165 61 55 166 53 55 167 58 56 168 67 56 169 59 56 170 59 57 171 68 57 + 172 60 57 173 60 58 174 69 58 175 61 58 176 62 59 177 69 59 178 70 59 179 62 60 180 71 + 60 181 63 60 182 56 61 183 160 61 184 64 61 185 56 62 186 65 62 187 57 62 188 57 63 189 + 66 63 190 58 63 191 70 64 192 79 64 193 71 64 194 64 65 195 160 65 196 72 65 197 64 66 + 198 73 66 199 65 66 200 65 67 201 74 67 202 66 67 203 66 68 204 75 68 205 67 68 206 67 + 69 207 76 69 208 68 69 209 68 70 210 77 70 211 69 70 212 70 71 213 77 71 214 78 71 215 + 74 72 216 83 72 217 75 72 218 76 73 219 83 73 220 84 73 221 76 74 222 85 74 223 77 74 + 224 78 75 225 85 75 226 86 75 227 78 76 228 87 76 229 79 76 230 72 77 231 160 77 232 80 + 77 233 72 78 234 81 78 235 73 78 236 73 79 237 82 79 238 74 79 239 86 80 240 95 80 241 + 87 80 242 80 81 243 160 81 244 88 81 245 80 82 246 89 82 247 81 82 248 81 83 249 90 83 + 250 82 83 251 82 84 252 91 84 253 83 84 254 84 85 255 91 85 256 92 85 257 84 86 258 93 + 86 259 85 86 260 86 87 261 93 87 262 94 87 263 92 88 264 99 88 265 100 88 266 92 89 267 + 101 89 268 93 89 269 94 90 270 101 90 271 102 90 272 95 91 273 102 91 274 103 91 275 88 + 92 276 160 92 277 96 92 278 88 93 279 97 93 280 89 93 281 89 94 282 98 94 283 90 94 284 + 90 95 285 99 95 286 91 95 287 96 96 288 105 96 289 97 96 290 97 97 291 106 97 292 98 97 + 293 98 98 294 107 98 295 99 98 296 100 99 297 107 99 298 108 99 299 100 100 300 109 100 + 301 101 100 302 102 101 303 109 101 304 110 101 305 103 102 306 110 102 307 111 102 308 + 96 103 309 160 103 310 104 103 311 108 104 312 117 104 313 109 104 314 110 105 315 117 + 105 316 118 105 317 111 106 318 118 106 319 119 106 320 104 107 321 160 107 322 112 107 + 323 104 108 324 113 108 325 105 108 326 106 109 327 113 109 328 114 109 329 106 110 330 + 115 110 331 107 110 332 107 111 333 116 111 334 108 111 335 112 112 336 121 112 337 113 + 112 338 114 113 339 121 113 340 122 113 341 115 114 342 122 114 343 123 114 344 115 115 + 345 124 115 346 116 115 347 116 116 348 125 116 349 117 116 350 118 117 351 125 117 352 + 126 117 353 119 118 354 126 118 355 127 118 356 112 119 357 160 119 358 120 119 359 124 + 120 360 133 120 361 125 120 362 126 121 363 133 121 364 134 121 365 127 122 366 134 122 + 367 135 122 368 120 123 369 160 123 370 128 123 371 120 124 372 129 124 373 121 124 374 + 121 125 375 130 125 376 122 125 377 123 126 378 130 126 379 131 126 380 123 127 381 132 + 127 382 124 127 383 129 128 384 138 128 385 130 128 386 131 129 387 138 129 388 139 129 + 389 132 130 390 139 130 391 140 130 392 132 131 393 141 131 394 133 131 395 134 132 396 + 141 132 397 142 132 398 135 133 399 142 133 400 143 133 401 128 134 402 160 134 403 136 + 134 404 128 135 405 137 135 406 129 135 407 142 136 408 149 136 409 150 136 410 143 137 + 411 150 137 412 151 137 413 136 138 414 160 138 415 144 138 416 136 139 417 145 139 418 + 137 139 419 137 140 420 146 140 421 138 140 422 139 141 423 146 141 424 147 141 425 140 + 142 426 147 142 427 148 142 428 140 143 429 149 143 430 141 143 431 145 144 432 154 144 + 433 146 144 434 147 145 435 154 145 436 155 145 437 148 146 438 155 146 439 156 146 440 + 148 147 441 157 147 442 149 147 443 150 148 444 157 148 445 158 148 446 151 149 447 158 + 149 448 159 149 449 144 150 450 160 150 451 152 150 452 144 151 453 153 151 454 145 151 + 455 158 152 456 166 152 457 167 152 458 159 153 459 167 153 460 168 153 461 152 154 462 + 160 154 463 161 154 464 152 155 465 162 155 466 153 155 467 153 156 468 163 156 469 154 + 156 470 155 157 471 163 157 472 164 157 473 156 158 474 164 158 475 165 158 476 156 159 + 477 166 159 478 157 159 479 164 160 480 171 160 481 172 160 482 165 161 483 172 161 484 + 173 161 485 165 162 486 174 162 487 166 162 488 167 163 489 174 163 490 175 163 491 168 + 164 492 175 164 493 176 164 494 161 165 495 160 165 496 169 165 497 161 166 498 170 166 + 499 162 166 500 162 167 501 171 167 502 163 167 503 175 168 504 184 168 505 176 168 506 + 169 169 507 160 169 508 177 169 509 169 170 510 178 170 511 170 170 512 170 171 513 179 + 171 514 171 171 515 172 172 516 179 172 517 180 172 518 173 173 519 180 173 520 181 173 + 521 173 174 522 182 174 523 174 174 524 175 175 525 182 175 526 183 175 527 181 176 528 + 188 176 529 189 176 530 181 177 531 190 177 532 182 177 533 183 178 534 190 178 535 191 + 178 536 183 179 537 192 179 538 184 179 539 177 180 540 160 180 541 185 180 542 177 181 + 543 186 181 544 178 181 545 178 182 546 187 182 547 179 182 548 180 183 549 187 183 550 + 188 183 551 185 184 552 160 184 553 193 184 554 186 185 555 193 185 556 194 185 557 186 + 186 558 195 186 559 187 186 560 188 187 561 195 187 562 196 187 563 189 188 564 196 188 + 565 197 188 566 189 189 567 198 189 568 190 189 569 191 190 570 198 190 571 199 190 572 + 191 191 573 200 191 574 192 191 575 196 192 576 205 192 577 197 192 578 197 193 579 206 + 193 580 198 193 581 199 194 582 206 194 583 207 194 584 199 195 585 208 195 586 200 195 + 587 193 196 588 160 196 589 201 196 590 194 197 591 201 197 592 202 197 593 194 198 594 + 203 198 595 195 198 596 196 199 597 203 199 598 204 199 599 202 200 600 209 200 601 210 + 200 602 202 201 603 211 201 604 203 201 605 204 202 606 211 202 607 212 202 608 205 203 + 609 212 203 610 213 203 611 205 204 612 214 204 613 206 204 614 207 205 615 214 205 616 + 215 205 617 207 206 618 216 206 619 208 206 620 201 207 621 160 207 622 209 207 623 213 + 208 624 222 208 625 214 208 626 215 209 627 222 209 628 223 209 629 215 210 630 224 210 + 631 216 210 632 209 211 633 160 211 634 217 211 635 210 212 636 217 212 637 218 212 638 + 210 213 639 219 213 640 211 213 641 212 214 642 219 214 643 220 214 644 213 215 645 220 + 215 646 221 215 647 217 216 648 226 216 649 218 216 650 218 217 651 227 217 652 219 217 + 653 220 218 654 227 218 655 228 218 656 221 219 657 228 219 658 229 219 659 221 220 660 + 230 220 661 222 220 662 223 221 663 230 221 664 231 221 665 223 222 666 232 222 667 224 + 222 668 217 223 669 160 223 670 225 223 671 229 224 672 238 224 673 230 224 674 231 225 + 675 238 225 676 239 225 677 232 226 678 239 226 679 240 226 680 225 227 681 160 227 682 + 233 227 683 225 228 684 234 228 685 226 228 686 226 229 687 235 229 688 227 229 689 227 + 230 690 236 230 691 228 230 692 229 231 693 236 231 694 237 231 695 235 232 696 242 232 + 697 243 232 698 236 233 699 243 233 700 244 233 701 237 234 702 244 234 703 245 234 704 + 237 235 705 246 235 706 238 235 707 239 236 708 246 236 709 247 236 710 239 237 711 248 + 237 712 240 237 713 233 238 714 160 238 715 241 238 716 234 239 717 241 239 718 242 239 + 719 247 240 720 254 240 721 255 240 722 247 241 723 256 241 724 248 241 725 241 242 726 + 160 242 727 249 242 728 241 243 729 250 243 730 242 243 731 242 244 732 251 244 733 243 + 244 734 243 245 735 252 245 736 244 245 737 245 246 738 252 246 739 253 246 740 245 247 + 741 254 247 742 246 247 743 252 248 744 2 248 745 3 248 746 253 249 747 3 249 748 4 249 + 749 254 250 750 4 250 751 5 250 752 255 251 753 5 251 754 6 251 755 256 252 756 6 252 + 757 7 252 758 249 253 759 160 253 760 0 253 761 250 254 762 0 254 763 1 254 764 251 255 + 765 1 255 766 2 255 767 2 256 768 1 256 769 9 256 770 2 257 771 10 257 772 11 257 773 3 + 258 774 11 258 775 12 258 776 4 259 777 12 259 778 13 259 779 5 260 780 13 260 781 14 + 260 782 6 261 783 14 261 784 15 261 785 1 262 786 0 262 787 8 262 788 9 263 789 8 263 + 790 16 263 791 9 264 792 17 264 793 18 264 794 10 265 795 18 265 796 19 265 797 11 266 + 798 19 266 799 20 266 800 12 267 801 20 267 802 21 267 803 14 268 804 13 268 805 21 268 + 806 14 269 807 22 269 808 23 269 809 20 270 810 28 270 811 29 270 812 22 271 813 21 271 + 814 29 271 815 23 272 816 22 272 817 30 272 818 16 273 819 24 273 820 25 273 821 18 274 + 822 17 274 823 25 274 824 19 275 825 18 275 826 26 275 827 19 276 828 27 276 829 28 276 + 830 25 277 831 33 277 832 34 277 833 26 278 834 34 278 835 35 278 836 27 279 837 35 279 + 838 36 279 839 28 280 840 36 280 841 37 280 842 30 281 843 29 281 844 37 281 845 31 282 + 846 30 282 847 38 282 848 24 283 849 32 283 850 33 283 851 38 284 852 37 284 853 45 284 + 854 39 285 855 38 285 856 46 285 857 32 286 858 40 286 859 41 286 860 33 287 861 41 287 + 862 42 287 863 34 288 864 42 288 865 43 288 866 36 289 867 35 289 868 43 289 869 36 290 + 870 44 290 871 45 290 872 41 291 873 49 291 874 50 291 875 42 292 876 50 292 877 51 292 + 878 44 293 879 43 293 880 51 293 881 44 294 882 52 294 883 53 294 884 46 295 885 45 295 + 886 53 295 887 46 296 888 54 296 889 55 296 890 40 297 891 48 297 892 49 297 893 54 298 + 894 53 298 895 61 298 896 54 299 897 62 299 898 63 299 899 48 300 900 56 300 901 57 300 + 902 49 301 903 57 301 904 58 301 905 50 302 906 58 302 907 59 302 908 52 303 909 51 303 + 910 59 303 911 52 304 912 60 304 913 61 304 914 58 305 915 66 305 916 67 305 917 59 306 + 918 67 306 919 68 306 920 60 307 921 68 307 922 69 307 923 62 308 924 61 308 925 69 308 + 926 62 309 927 70 309 928 71 309 929 56 310 930 64 310 931 65 310 932 57 311 933 65 311 + 934 66 311 935 70 312 936 78 312 937 79 312 938 64 313 939 72 313 940 73 313 941 65 314 + 942 73 314 943 74 314 944 66 315 945 74 315 946 75 315 947 67 316 948 75 316 949 76 316 + 950 68 317 951 76 317 952 77 317 953 70 318 954 69 318 955 77 318 956 74 319 957 82 319 + 958 83 319 959 76 320 960 75 320 961 83 320 962 76 321 963 84 321 964 85 321 965 78 322 + 966 77 322 967 85 322 968 78 323 969 86 323 970 87 323 971 72 324 972 80 324 973 81 324 + 974 73 325 975 81 325 976 82 325 977 86 326 978 94 326 979 95 326 980 80 327 981 88 327 + 982 89 327 983 81 328 984 89 328 985 90 328 986 82 329 987 90 329 988 91 329 989 84 330 + 990 83 330 991 91 330 992 84 331 993 92 331 994 93 331 995 86 332 996 85 332 997 93 332 + 998 92 333 999 91 333 1000 99 333 1001 92 334 1002 100 334 1003 101 334 1004 94 335 1005 + 93 335 1006 101 335 1007 95 336 1008 94 336 1009 102 336 1010 88 337 1011 96 337 1012 97 + 337 1013 89 338 1014 97 338 1015 98 338 1016 90 339 1017 98 339 1018 99 339 1019 96 340 + 1020 104 340 1021 105 340 1022 97 341 1023 105 341 1024 106 341 1025 98 342 1026 106 342 + 1027 107 342 1028 100 343 1029 99 343 1030 107 343 1031 100 344 1032 108 344 1033 109 + 344 1034 102 345 1035 101 345 1036 109 345 1037 103 346 1038 102 346 1039 110 346 1040 + 108 347 1041 116 347 1042 117 347 1043 110 348 1044 109 348 1045 117 348 1046 111 349 + 1047 110 349 1048 118 349 1049 104 350 1050 112 350 1051 113 350 1052 106 351 1053 105 + 351 1054 113 351 1055 106 352 1056 114 352 1057 115 352 1058 107 353 1059 115 353 1060 + 116 353 1061 112 354 1062 120 354 1063 121 354 1064 114 355 1065 113 355 1066 121 355 + 1067 115 356 1068 114 356 1069 122 356 1070 115 357 1071 123 357 1072 124 357 1073 116 + 358 1074 124 358 1075 125 358 1076 118 359 1077 117 359 1078 125 359 1079 119 360 1080 + 118 360 1081 126 360 1082 124 361 1083 132 361 1084 133 361 1085 126 362 1086 125 362 + 1087 133 362 1088 127 363 1089 126 363 1090 134 363 1091 120 364 1092 128 364 1093 129 + 364 1094 121 365 1095 129 365 1096 130 365 1097 123 366 1098 122 366 1099 130 366 1100 + 123 367 1101 131 367 1102 132 367 1103 129 368 1104 137 368 1105 138 368 1106 131 369 + 1107 130 369 1108 138 369 1109 132 370 1110 131 370 1111 139 370 1112 132 371 1113 140 + 371 1114 141 371 1115 134 372 1116 133 372 1117 141 372 1118 135 373 1119 134 373 1120 + 142 373 1121 128 374 1122 136 374 1123 137 374 1124 142 375 1125 141 375 1126 149 375 + 1127 143 376 1128 142 376 1129 150 376 1130 136 377 1131 144 377 1132 145 377 1133 137 + 378 1134 145 378 1135 146 378 1136 139 379 1137 138 379 1138 146 379 1139 140 380 1140 + 139 380 1141 147 380 1142 140 381 1143 148 381 1144 149 381 1145 145 382 1146 153 382 + 1147 154 382 1148 147 383 1149 146 383 1150 154 383 1151 148 384 1152 147 384 1153 155 + 384 1154 148 385 1155 156 385 1156 157 385 1157 150 386 1158 149 386 1159 157 386 1160 + 151 387 1161 150 387 1162 158 387 1163 144 388 1164 152 388 1165 153 388 1166 158 389 + 1167 157 389 1168 166 389 1169 159 390 1170 158 390 1171 167 390 1172 152 391 1173 161 + 391 1174 162 391 1175 153 392 1176 162 392 1177 163 392 1178 155 393 1179 154 393 1180 + 163 393 1181 156 394 1182 155 394 1183 164 394 1184 156 395 1185 165 395 1186 166 395 + 1187 164 396 1188 163 396 1189 171 396 1190 165 397 1191 164 397 1192 172 397 1193 165 + 398 1194 173 398 1195 174 398 1196 167 399 1197 166 399 1198 174 399 1199 168 400 1200 + 167 400 1201 175 400 1202 161 401 1203 169 401 1204 170 401 1205 162 402 1206 170 402 + 1207 171 402 1208 175 403 1209 183 403 1210 184 403 1211 169 404 1212 177 404 1213 178 + 404 1214 170 405 1215 178 405 1216 179 405 1217 172 406 1218 171 406 1219 179 406 1220 + 173 407 1221 172 407 1222 180 407 1223 173 408 1224 181 408 1225 182 408 1226 175 409 + 1227 174 409 1228 182 409 1229 181 410 1230 180 410 1231 188 410 1232 181 411 1233 189 + 411 1234 190 411 1235 183 412 1236 182 412 1237 190 412 1238 183 413 1239 191 413 1240 + 192 413 1241 177 414 1242 185 414 1243 186 414 1244 178 415 1245 186 415 1246 187 415 + 1247 180 416 1248 179 416 1249 187 416 1250 186 417 1251 185 417 1252 193 417 1253 186 + 418 1254 194 418 1255 195 418 1256 188 419 1257 187 419 1258 195 419 1259 189 420 1260 + 188 420 1261 196 420 1262 189 421 1263 197 421 1264 198 421 1265 191 422 1266 190 422 + 1267 198 422 1268 191 423 1269 199 423 1270 200 423 1271 196 424 1272 204 424 1273 205 + 424 1274 197 425 1275 205 425 1276 206 425 1277 199 426 1278 198 426 1279 206 426 1280 + 199 427 1281 207 427 1282 208 427 1283 194 428 1284 193 428 1285 201 428 1286 194 429 + 1287 202 429 1288 203 429 1289 196 430 1290 195 430 1291 203 430 1292 202 431 1293 201 + 431 1294 209 431 1295 202 432 1296 210 432 1297 211 432 1298 204 433 1299 203 433 1300 + 211 433 1301 205 434 1302 204 434 1303 212 434 1304 205 435 1305 213 435 1306 214 435 + 1307 207 436 1308 206 436 1309 214 436 1310 207 437 1311 215 437 1312 216 437 1313 213 + 438 1314 221 438 1315 222 438 1316 215 439 1317 214 439 1318 222 439 1319 215 440 1320 + 223 440 1321 224 440 1322 210 441 1323 209 441 1324 217 441 1325 210 442 1326 218 442 + 1327 219 442 1328 212 443 1329 211 443 1330 219 443 1331 213 444 1332 212 444 1333 220 + 444 1334 217 445 1335 225 445 1336 226 445 1337 218 446 1338 226 446 1339 227 446 1340 + 220 447 1341 219 447 1342 227 447 1343 221 448 1344 220 448 1345 228 448 1346 221 449 + 1347 229 449 1348 230 449 1349 223 450 1350 222 450 1351 230 450 1352 223 451 1353 231 + 451 1354 232 451 1355 229 452 1356 237 452 1357 238 452 1358 231 453 1359 230 453 1360 + 238 453 1361 232 454 1362 231 454 1363 239 454 1364 225 455 1365 233 455 1366 234 455 + 1367 226 456 1368 234 456 1369 235 456 1370 227 457 1371 235 457 1372 236 457 1373 229 + 458 1374 228 458 1375 236 458 1376 235 459 1377 234 459 1378 242 459 1379 236 460 1380 + 235 460 1381 243 460 1382 237 461 1383 236 461 1384 244 461 1385 237 462 1386 245 462 + 1387 246 462 1388 239 463 1389 238 463 1390 246 463 1391 239 464 1392 247 464 1393 248 + 464 1394 234 465 1395 233 465 1396 241 465 1397 247 466 1398 246 466 1399 254 466 1400 + 247 467 1401 255 467 1402 256 467 1403 241 468 1404 249 468 1405 250 468 1406 242 469 + 1407 250 469 1408 251 469 1409 243 470 1410 251 470 1411 252 470 1412 245 471 1413 244 + 471 1414 252 471 1415 245 472 1416 253 472 1417 254 472 1418 252 473 1419 251 473 1420 2 + 473 1421 253 474 1422 252 474 1423 3 474 1424 254 475 1425 253 475 1426 4 475 1427 255 + 476 1428 254 476 1429 5 476 1430 256 477 1431 255 477 1432 6 477 1433 250 478 1434 249 + 478 1435 0 478 1436 251 479 1437 250 479 1438 1 479 1439

@@ -124,19 +846,21 @@ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 - + - 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 - + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 + -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 + - -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 - + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 + 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + - +
\ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere_low_res.dae b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere_low_res.dae index 0728dc1cf..65234dc11 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere_low_res.dae +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/config/half_sphere_low_res.dae @@ -1,5 +1,6 @@ - + Blender User @@ -7,7 +8,7 @@ 2025-10-17T13:55:27 2025-10-17T13:55:27 - + Z_UP @@ -136,47 +137,158 @@ - + - -0.01325488 0.1345798 1.001765 0.07722115 0.7840512 0.6281846 0.3137093 0.9734103 -1.85e-4 0.1632868 0.9564644 0.2906959 0.2085702 0.4411473 0.8905956 0.4005294 0.6551591 0.6562193 0.5290973 0.8068813 0.2993493 0.7888808 0.3955252 0.5099558 0.8256387 0.5967503 5.35744e-4 0.566708 0.2744462 0.7882705 0.9944202 0.2212299 7.03344e-4 0.2753965 -0.09513747 0.9704732 0.70285 -0.07643383 0.7329581 0.9531219 -0.05964297 0.3184149 0.9686656 -0.3109387 0.001276493 0.7792252 -0.5260764 0.3928685 0.5292922 -0.5613266 0.6542037 0.7777084 -0.6382493 1.20498e-4 0.181976 -0.4576669 0.8931517 0.4698429 -0.8435196 0.2929196 0.2799578 -0.983649 -1.84997e-4 0.1017685 -0.7581791 0.6688626 0.1112768 -0.9591117 0.2929194 -0.2248772 -0.1894459 0.9669445 -0.2554143 -0.8518967 0.475432 -0.3109386 -0.9686657 0.001276493 -0.3517054 -0.5126487 0.7979108 -0.6131211 -0.6010743 0.5506645 -0.6579619 -0.7759395 0.001276552 -0.926194 -0.4242104 5.35735e-4 -0.658938 -0.02178961 0.7779482 -0.878505 -0.1848486 0.4712049 -1.018472 -0.02297621 7.0334e-4 -0.4438056 0.1572837 0.8914893 -0.893555 0.283679 0.3956963 -0.8439648 0.5639191 1.98517e-4 -0.5982692 0.5050359 0.6332252 -0.6449747 0.719934 0.3304309 -0.17421 0.4230537 0.9052653 -0.2962267 0.7151503 0.6519381 -0.3731291 0.9407632 -9.86808e-5 -0.1842638 0.9494815 0.2948295 + -0.01325488 0.1345798 1.001765 + 0.07722115 0.7840512 0.6281846 0.3137093 0.9734103 -1.85e-4 0.1632868 0.9564644 + 0.2906959 0.2085702 0.4411473 0.8905956 0.4005294 0.6551591 0.6562193 0.5290973 + 0.8068813 0.2993493 0.7888808 0.3955252 0.5099558 0.8256387 0.5967503 5.35744e-4 + 0.566708 0.2744462 0.7882705 0.9944202 0.2212299 7.03344e-4 0.2753965 -0.09513747 + 0.9704732 0.70285 -0.07643383 0.7329581 0.9531219 -0.05964297 0.3184149 0.9686656 + -0.3109387 0.001276493 0.7792252 -0.5260764 0.3928685 0.5292922 -0.5613266 0.6542037 + 0.7777084 -0.6382493 1.20498e-4 0.181976 -0.4576669 0.8931517 0.4698429 -0.8435196 + 0.2929196 0.2799578 -0.983649 -1.84997e-4 0.1017685 -0.7581791 0.6688626 0.1112768 + -0.9591117 0.2929194 -0.2248772 -0.1894459 0.9669445 -0.2554143 -0.8518967 0.475432 + -0.3109386 -0.9686657 0.001276493 -0.3517054 -0.5126487 0.7979108 -0.6131211 -0.6010743 + 0.5506645 -0.6579619 -0.7759395 0.001276552 -0.926194 -0.4242104 5.35735e-4 -0.658938 + -0.02178961 0.7779482 -0.878505 -0.1848486 0.4712049 -1.018472 -0.02297621 7.0334e-4 + -0.4438056 0.1572837 0.8914893 -0.893555 0.283679 0.3956963 -0.8439648 0.5639191 + 1.98517e-4 -0.5982692 0.5050359 0.6332252 -0.6449747 0.719934 0.3304309 -0.17421 + 0.4230537 0.9052653 -0.2962267 0.7151503 0.6519381 -0.3731291 0.9407632 -9.86808e-5 + -0.1842638 0.9494815 0.2948295 - - - + + + - -0.01253652 0.8917429 0.4523687 0.02071845 0.3275491 0.944607 0.191416 0.6416817 0.7427009 0.3252372 0.822383 0.4668053 0.434885 0.4586173 0.7749487 0.8892893 0.3997997 0.2220917 0.2406423 0.1722605 0.9552056 0.4834383 0.04980421 0.8739606 0.9950609 -0.0480628 0.08685481 0.836701 -0.2328135 0.495711 0.4734818 -0.2987375 0.8285957 0.5658002 -0.6923999 0.4477194 0.5699394 -0.8213523 0.02344757 0.3103609 -0.6204057 0.7202588 0.2726135 -0.8456464 0.4588727 0.01495462 -0.1164866 0.9930798 -0.0235452 -0.8819372 0.4707785 -0.1532699 -0.9551999 0.2531829 -0.3558816 -0.6949459 0.6248189 -0.4627031 -0.8331439 0.3029477 -0.770235 -0.5868632 0.2496592 -0.4678316 -0.2584468 0.8451858 -0.6861947 -0.3120768 0.657073 -0.9532014 -0.2193096 0.2081113 -0.8271632 0.06341791 0.558372 -0.9553143 0.2841233 0.08153903 -0.6171712 0.2737202 0.7376835 -0.2343515 0.1882883 0.9537437 -0.6248512 0.7807061 0.007683634 -0.3964329 0.5013843 0.7690611 -0.377916 0.8239722 0.4221959 -0.05821955 0.5925377 0.8034362 -0.04744762 0.9983077 0.03362196 0.2850496 0.8221769 0.4927191 0.3625624 0.9005393 0.2399533 0.6048076 0.6308186 0.4860819 0.592478 0.8052951 0.02167475 0.732319 0.6136344 0.2952318 0.5716386 0.4802645 0.6652634 0.3469045 0.1803182 0.9204035 0.7294731 0.1789665 0.6601819 0.8510518 0.08935093 0.5174238 0.9297303 0.2074486 0.3042477 0.9134517 -0.2959733 0.2792952 0.8551107 -0.4993743 0.1393241 0.4765236 -0.3045134 0.8247404 0.6998122 -0.3514856 0.6218689 0.6689058 -0.715444 0.2017549 0.3687137 -0.7610249 0.5337522 0.2972205 -0.9219762 0.2482334 0.03399616 -0.2168428 0.9756144 -0.02511763 -0.9972981 0.06903415 -0.1166037 -0.4239671 0.8981401 -0.08451426 -0.5814043 0.8092135 -0.186286 -0.7041679 0.6851608 -0.5167307 -0.8153011 0.2612922 -0.5847297 -0.3359575 0.7383927 -0.8253319 -0.4651089 0.3201578 -0.4204194 -0.06856864 0.9047353 -0.9568437 0.01602727 0.2901607 -0.2449595 0.0559681 0.9679166 -0.7390969 0.4902493 0.461943 -0.8228616 0.5072011 0.2562144 -0.7161146 0.2603685 0.6476018 -0.4378862 0.4025206 0.8038862 -0.4991561 0.6684365 0.5513944 -0.4177238 0.8758604 0.24161 -0.001979708 0.6547181 0.7558706 -0.1233773 0.8469854 0.5171014 -0.02028191 0.9996572 -0.01656222 + -0.01253652 0.8917429 0.4523687 + 0.02071845 0.3275491 0.944607 0.191416 0.6416817 0.7427009 0.3252372 0.822383 0.4668053 + 0.434885 0.4586173 0.7749487 0.8892893 0.3997997 0.2220917 0.2406423 0.1722605 0.9552056 + 0.4834383 0.04980421 0.8739606 0.9950609 -0.0480628 0.08685481 0.836701 -0.2328135 + 0.495711 0.4734818 -0.2987375 0.8285957 0.5658002 -0.6923999 0.4477194 0.5699394 + -0.8213523 0.02344757 0.3103609 -0.6204057 0.7202588 0.2726135 -0.8456464 0.4588727 + 0.01495462 -0.1164866 0.9930798 -0.0235452 -0.8819372 0.4707785 -0.1532699 -0.9551999 + 0.2531829 -0.3558816 -0.6949459 0.6248189 -0.4627031 -0.8331439 0.3029477 -0.770235 + -0.5868632 0.2496592 -0.4678316 -0.2584468 0.8451858 -0.6861947 -0.3120768 0.657073 + -0.9532014 -0.2193096 0.2081113 -0.8271632 0.06341791 0.558372 -0.9553143 0.2841233 + 0.08153903 -0.6171712 0.2737202 0.7376835 -0.2343515 0.1882883 0.9537437 -0.6248512 + 0.7807061 0.007683634 -0.3964329 0.5013843 0.7690611 -0.377916 0.8239722 0.4221959 + -0.05821955 0.5925377 0.8034362 -0.04744762 0.9983077 0.03362196 0.2850496 0.8221769 + 0.4927191 0.3625624 0.9005393 0.2399533 0.6048076 0.6308186 0.4860819 0.592478 0.8052951 + 0.02167475 0.732319 0.6136344 0.2952318 0.5716386 0.4802645 0.6652634 0.3469045 + 0.1803182 0.9204035 0.7294731 0.1789665 0.6601819 0.8510518 0.08935093 0.5174238 + 0.9297303 0.2074486 0.3042477 0.9134517 -0.2959733 0.2792952 0.8551107 -0.4993743 + 0.1393241 0.4765236 -0.3045134 0.8247404 0.6998122 -0.3514856 0.6218689 0.6689058 + -0.715444 0.2017549 0.3687137 -0.7610249 0.5337522 0.2972205 -0.9219762 0.2482334 + 0.03399616 -0.2168428 0.9756144 -0.02511763 -0.9972981 0.06903415 -0.1166037 -0.4239671 + 0.8981401 -0.08451426 -0.5814043 0.8092135 -0.186286 -0.7041679 0.6851608 -0.5167307 + -0.8153011 0.2612922 -0.5847297 -0.3359575 0.7383927 -0.8253319 -0.4651089 0.3201578 + -0.4204194 -0.06856864 0.9047353 -0.9568437 0.01602727 0.2901607 -0.2449595 0.0559681 + 0.9679166 -0.7390969 0.4902493 0.461943 -0.8228616 0.5072011 0.2562144 -0.7161146 + 0.2603685 0.6476018 -0.4378862 0.4025206 0.8038862 -0.4991561 0.6684365 0.5513944 + -0.4177238 0.8758604 0.24161 -0.001979708 0.6547181 0.7558706 -0.1233773 0.8469854 + 0.5171014 -0.02028191 0.9996572 -0.01656222 - - - + + + - 0.7343753 0.7172812 0.7208486 0.5895956 0.7806703 0.5944218 0.8090972 0.8487428 0.7700334 0.9519359 0.6735347 0.833863 0.6735347 0.833863 0.663605 0.7238089 0.7343753 0.7172812 0.663605 0.7238089 0.6570079 0.5934333 0.7208486 0.5895956 0.6735347 0.833863 0.5699128 0.7848475 0.663605 0.7238089 0.5949024 0.5046411 0.5729086 0.6599355 0.5246343 0.5171094 0.7700334 0.9519359 0.435422 0.9045935 0.6735347 0.833863 0.435422 0.9045935 0.4812651 0.7522646 0.5699128 0.7848475 0.4915953 0.603472 0.4547237 0.5011833 0.5246343 0.5171094 0.4812651 0.7522646 0.4064618 0.6243047 0.4915953 0.603472 0.435422 0.9045935 0.3050887 0.83463 0.4812651 0.7522646 0.3692653 0.7265251 0.3296007 0.5935838 0.4064618 0.6243047 0.3906249 0.5 0.3296007 0.5935838 0.2940939 0.5 0.3050887 0.83463 0.2724976 0.7227665 0.3692653 0.7265251 0.2724976 0.7227665 0.2671006 0.5935838 0.3296007 0.5935838 0.435422 0.9045935 0.2656248 1 0.1155354 0.9062446 0.2724976 0.7227665 0.2031645 0.6558217 0.2671006 0.5935838 0.2671006 0.5935838 0.2031645 0.6558217 0.2014388 0.4999136 0.2031645 0.6558217 0.1549574 0.7901108 0.1213761 0.6748881 0.2014388 0.4999136 0.1213761 0.6748881 0.1389387 0.4999136 0.1389387 0.4999136 0.1213761 0.6748881 0.06365263 0.504641 0.1155354 0.9062446 0.02128207 0.7686299 0.1549574 0.7901108 0.1213761 0.6748881 0.02128207 0.7686299 0.03203266 0.6548011 0.06365263 0.504641 0.03203266 0.6548011 0.003508985 0.5171094 0.9856052 0.7828176 0.9526488 0.6259564 1 0.6539883 0.9526488 0.6259564 0.9063698 0.5 0.9898752 0.5171094 0.9856052 0.7828176 0.9458933 0.8465552 0.8900402 0.7165343 0.7700334 0.9519359 0.8090972 0.8487428 0.9458933 0.8465552 0.9063698 0.5 0.8662261 0.5970992 0.8101704 0.5 0.8090972 0.8487428 0.812639 0.7190108 0.8900402 0.7165343 0.812639 0.7190108 0.7806703 0.5944218 0.8662261 0.5970992 0.812639 0.7190108 0.6735347 0.833863 0.7343753 0.7172812 0.8101704 0.5 0.7208486 0.5895956 0.7003149 0.5 0.7343753 0.7172812 0.663605 0.7238089 0.7208486 0.5895956 0.7208486 0.5895956 0.6570079 0.5934333 0.7003149 0.5 0.663605 0.7238089 0.5729086 0.6599355 0.6570079 0.5934333 0.7003149 0.5 0.6570079 0.5934333 0.5949024 0.5046411 0.5949024 0.5046411 0.6570079 0.5934333 0.5729086 0.6599355 0.5729086 0.6599355 0.663605 0.7238089 0.5699128 0.7848475 0.6735347 0.833863 0.435422 0.9045935 0.5699128 0.7848475 0.5729086 0.6599355 0.5699128 0.7848475 0.4812651 0.7522646 0.5729086 0.6599355 0.4812651 0.7522646 0.4915953 0.603472 0.5246343 0.5171094 0.5729086 0.6599355 0.4915953 0.603472 0.4547237 0.5011833 0.4915953 0.603472 0.4064618 0.6243047 0.4547237 0.5011833 0.4064618 0.6243047 0.3906249 0.5 0.4812651 0.7522646 0.3050887 0.83463 0.3692653 0.7265251 0.4064618 0.6243047 0.4812651 0.7522646 0.3692653 0.7265251 0.3906249 0.5 0.4064618 0.6243047 0.3296007 0.5935838 0.3692653 0.7265251 0.2724976 0.7227665 0.3296007 0.5935838 0.2940939 0.5 0.3296007 0.5935838 0.2671006 0.5935838 0.435422 0.9045935 0.1155354 0.9062446 0.3050887 0.83463 0.2940939 0.5 0.2671006 0.5935838 0.2014388 0.4999136 0.3050887 0.83463 0.1155354 0.9062446 0.1549574 0.7901108 0.2724976 0.7227665 0.3050887 0.83463 0.1549574 0.7901108 0.2031645 0.6558217 0.2724976 0.7227665 0.1549574 0.7901108 0.2014388 0.4999136 0.2031645 0.6558217 0.1213761 0.6748881 0.1213761 0.6748881 0.1549574 0.7901108 0.02128207 0.7686299 0.06365263 0.504641 0.1213761 0.6748881 0.03203266 0.6548011 0.1155354 0.9062446 0 0.8750001 0.02128207 0.7686299 0.9898752 0.5171094 1 0.6539883 0.9526488 0.6259564 0.9458933 0.8465552 1 0.9375 0.7700334 0.9519359 0.9526488 0.6259564 0.8900402 0.7165343 0.8662261 0.5970992 0.9526488 0.6259564 0.8662261 0.5970992 0.9063698 0.5 0.9526488 0.6259564 0.9856052 0.7828176 0.8900402 0.7165343 0.8900402 0.7165343 0.9458933 0.8465552 0.8090972 0.8487428 0.8900402 0.7165343 0.812639 0.7190108 0.8662261 0.5970992 0.8662261 0.5970992 0.7806703 0.5944218 0.8101704 0.5 0.812639 0.7190108 0.8090972 0.8487428 0.6735347 0.833863 0.7806703 0.5944218 0.812639 0.7190108 0.7343753 0.7172812 0.8101704 0.5 0.7806703 0.5944218 0.7208486 0.5895956 + 0.7343753 0.7172812 0.7208486 + 0.5895956 0.7806703 0.5944218 0.8090972 0.8487428 0.7700334 0.9519359 0.6735347 0.833863 + 0.6735347 0.833863 0.663605 0.7238089 0.7343753 0.7172812 0.663605 0.7238089 0.6570079 + 0.5934333 0.7208486 0.5895956 0.6735347 0.833863 0.5699128 0.7848475 0.663605 0.7238089 + 0.5949024 0.5046411 0.5729086 0.6599355 0.5246343 0.5171094 0.7700334 0.9519359 0.435422 + 0.9045935 0.6735347 0.833863 0.435422 0.9045935 0.4812651 0.7522646 0.5699128 0.7848475 + 0.4915953 0.603472 0.4547237 0.5011833 0.5246343 0.5171094 0.4812651 0.7522646 0.4064618 + 0.6243047 0.4915953 0.603472 0.435422 0.9045935 0.3050887 0.83463 0.4812651 0.7522646 + 0.3692653 0.7265251 0.3296007 0.5935838 0.4064618 0.6243047 0.3906249 0.5 0.3296007 + 0.5935838 0.2940939 0.5 0.3050887 0.83463 0.2724976 0.7227665 0.3692653 0.7265251 + 0.2724976 0.7227665 0.2671006 0.5935838 0.3296007 0.5935838 0.435422 0.9045935 0.2656248 + 1 0.1155354 0.9062446 0.2724976 0.7227665 0.2031645 0.6558217 0.2671006 0.5935838 + 0.2671006 0.5935838 0.2031645 0.6558217 0.2014388 0.4999136 0.2031645 0.6558217 + 0.1549574 0.7901108 0.1213761 0.6748881 0.2014388 0.4999136 0.1213761 0.6748881 + 0.1389387 0.4999136 0.1389387 0.4999136 0.1213761 0.6748881 0.06365263 0.504641 + 0.1155354 0.9062446 0.02128207 0.7686299 0.1549574 0.7901108 0.1213761 0.6748881 + 0.02128207 0.7686299 0.03203266 0.6548011 0.06365263 0.504641 0.03203266 0.6548011 + 0.003508985 0.5171094 0.9856052 0.7828176 0.9526488 0.6259564 1 0.6539883 0.9526488 + 0.6259564 0.9063698 0.5 0.9898752 0.5171094 0.9856052 0.7828176 0.9458933 0.8465552 + 0.8900402 0.7165343 0.7700334 0.9519359 0.8090972 0.8487428 0.9458933 0.8465552 + 0.9063698 0.5 0.8662261 0.5970992 0.8101704 0.5 0.8090972 0.8487428 0.812639 0.7190108 + 0.8900402 0.7165343 0.812639 0.7190108 0.7806703 0.5944218 0.8662261 0.5970992 0.812639 + 0.7190108 0.6735347 0.833863 0.7343753 0.7172812 0.8101704 0.5 0.7208486 0.5895956 + 0.7003149 0.5 0.7343753 0.7172812 0.663605 0.7238089 0.7208486 0.5895956 0.7208486 + 0.5895956 0.6570079 0.5934333 0.7003149 0.5 0.663605 0.7238089 0.5729086 0.6599355 + 0.6570079 0.5934333 0.7003149 0.5 0.6570079 0.5934333 0.5949024 0.5046411 0.5949024 + 0.5046411 0.6570079 0.5934333 0.5729086 0.6599355 0.5729086 0.6599355 0.663605 0.7238089 + 0.5699128 0.7848475 0.6735347 0.833863 0.435422 0.9045935 0.5699128 0.7848475 0.5729086 + 0.6599355 0.5699128 0.7848475 0.4812651 0.7522646 0.5729086 0.6599355 0.4812651 + 0.7522646 0.4915953 0.603472 0.5246343 0.5171094 0.5729086 0.6599355 0.4915953 0.603472 + 0.4547237 0.5011833 0.4915953 0.603472 0.4064618 0.6243047 0.4547237 0.5011833 0.4064618 + 0.6243047 0.3906249 0.5 0.4812651 0.7522646 0.3050887 0.83463 0.3692653 0.7265251 + 0.4064618 0.6243047 0.4812651 0.7522646 0.3692653 0.7265251 0.3906249 0.5 0.4064618 + 0.6243047 0.3296007 0.5935838 0.3692653 0.7265251 0.2724976 0.7227665 0.3296007 + 0.5935838 0.2940939 0.5 0.3296007 0.5935838 0.2671006 0.5935838 0.435422 0.9045935 + 0.1155354 0.9062446 0.3050887 0.83463 0.2940939 0.5 0.2671006 0.5935838 0.2014388 + 0.4999136 0.3050887 0.83463 0.1155354 0.9062446 0.1549574 0.7901108 0.2724976 0.7227665 + 0.3050887 0.83463 0.1549574 0.7901108 0.2031645 0.6558217 0.2724976 0.7227665 0.1549574 + 0.7901108 0.2014388 0.4999136 0.2031645 0.6558217 0.1213761 0.6748881 0.1213761 + 0.6748881 0.1549574 0.7901108 0.02128207 0.7686299 0.06365263 0.504641 0.1213761 + 0.6748881 0.03203266 0.6548011 0.1155354 0.9062446 0 0.8750001 0.02128207 0.7686299 + 0.9898752 0.5171094 1 0.6539883 0.9526488 0.6259564 0.9458933 0.8465552 1 0.9375 + 0.7700334 0.9519359 0.9526488 0.6259564 0.8900402 0.7165343 0.8662261 0.5970992 + 0.9526488 0.6259564 0.8662261 0.5970992 0.9063698 0.5 0.9526488 0.6259564 0.9856052 + 0.7828176 0.8900402 0.7165343 0.8900402 0.7165343 0.9458933 0.8465552 0.8090972 + 0.8487428 0.8900402 0.7165343 0.812639 0.7190108 0.8662261 0.5970992 0.8662261 0.5970992 + 0.7806703 0.5944218 0.8101704 0.5 0.812639 0.7190108 0.8090972 0.8487428 0.6735347 + 0.833863 0.7806703 0.5944218 0.812639 0.7190108 0.7343753 0.7172812 0.8101704 0.5 + 0.7806703 0.5944218 0.7208486 0.5895956 - - + + - + - - - -

1 0 0 3 0 1 41 0 2 38 1 3 0 1 4 4 1 5 4 2 6 5 2 7 1 2 8 5 3 9 6 3 10 3 3 11 4 4 12 9 4 13 5 4 14 8 5 15 7 5 16 10 5 17 0 6 18 11 6 19 4 6 20 11 7 21 12 7 22 9 7 23 13 8 24 14 8 25 10 8 26 12 9 27 15 9 28 13 9 29 11 10 30 18 10 31 12 10 32 16 11 33 19 11 34 15 11 35 17 12 36 19 12 37 20 12 38 18 13 39 21 13 40 16 13 41 21 14 42 22 14 43 19 14 44 11 15 45 0 15 46 23 15 47 21 16 48 24 16 49 22 16 50 22 17 51 24 17 52 25 17 53 24 18 54 26 18 55 27 18 56 25 19 57 27 19 58 28 19 59 28 20 60 27 20 61 29 20 62 23 21 63 30 21 64 26 21 65 27 22 66 30 22 67 31 22 68 29 23 69 31 23 70 32 23 71 30 24 72 34 24 73 31 24 74 34 25 75 35 25 76 32 25 77 30 26 78 33 26 79 36 26 80 0 27 81 38 27 82 33 27 83 35 28 84 37 28 85 40 28 86 38 29 87 39 29 88 36 29 89 39 30 90 41 30 91 37 30 92 39 31 93 4 31 94 1 31 95 40 32 96 3 32 97 2 32 98 1 33 99 5 33 100 3 33 101 3 34 102 6 34 103 2 34 104 5 35 105 7 35 106 6 35 107 2 36 108 6 36 109 8 36 110 8 37 111 6 37 112 7 37 113 7 38 114 5 38 115 9 38 116 4 39 117 11 39 118 9 39 119 7 40 120 9 40 121 12 40 122 7 41 123 12 41 124 13 41 125 10 42 126 7 42 127 13 42 128 14 43 129 13 43 130 15 43 131 14 44 132 15 44 133 17 44 134 12 45 135 18 45 136 16 45 137 15 46 138 12 46 139 16 46 140 17 47 141 15 47 142 19 47 143 16 48 144 21 48 145 19 48 146 20 49 147 19 49 148 22 49 149 11 50 150 23 50 151 18 50 152 20 51 153 22 51 154 25 51 155 18 52 156 23 52 157 26 52 158 21 53 159 18 53 160 26 53 161 24 54 162 21 54 163 26 54 164 25 55 165 24 55 166 27 55 167 27 56 168 26 56 169 30 56 170 29 57 171 27 57 172 31 57 173 23 58 174 33 58 175 30 58 176 32 59 177 31 59 178 34 59 179 33 60 180 23 60 181 0 60 182 34 61 183 36 61 184 37 61 185 34 62 186 37 62 187 35 62 188 34 63 189 30 63 190 36 63 191 36 64 192 33 64 193 38 64 194 36 65 195 39 65 196 37 65 197 37 66 198 41 66 199 40 66 200 39 67 201 38 67 202 4 67 203 41 68 204 39 68 205 1 68 206 40 69 207 41 69 208 3 69 209

+ + + +

1 0 0 3 0 1 41 0 2 38 1 3 0 1 4 4 1 5 4 2 6 5 2 7 1 2 8 5 3 9 6 3 10 3 3 11 4 4 12 9 4 + 13 5 4 14 8 5 15 7 5 16 10 5 17 0 6 18 11 6 19 4 6 20 11 7 21 12 7 22 9 7 23 13 8 24 14 + 8 25 10 8 26 12 9 27 15 9 28 13 9 29 11 10 30 18 10 31 12 10 32 16 11 33 19 11 34 15 11 + 35 17 12 36 19 12 37 20 12 38 18 13 39 21 13 40 16 13 41 21 14 42 22 14 43 19 14 44 11 + 15 45 0 15 46 23 15 47 21 16 48 24 16 49 22 16 50 22 17 51 24 17 52 25 17 53 24 18 54 26 + 18 55 27 18 56 25 19 57 27 19 58 28 19 59 28 20 60 27 20 61 29 20 62 23 21 63 30 21 64 + 26 21 65 27 22 66 30 22 67 31 22 68 29 23 69 31 23 70 32 23 71 30 24 72 34 24 73 31 24 + 74 34 25 75 35 25 76 32 25 77 30 26 78 33 26 79 36 26 80 0 27 81 38 27 82 33 27 83 35 28 + 84 37 28 85 40 28 86 38 29 87 39 29 88 36 29 89 39 30 90 41 30 91 37 30 92 39 31 93 4 31 + 94 1 31 95 40 32 96 3 32 97 2 32 98 1 33 99 5 33 100 3 33 101 3 34 102 6 34 103 2 34 104 + 5 35 105 7 35 106 6 35 107 2 36 108 6 36 109 8 36 110 8 37 111 6 37 112 7 37 113 7 38 + 114 5 38 115 9 38 116 4 39 117 11 39 118 9 39 119 7 40 120 9 40 121 12 40 122 7 41 123 + 12 41 124 13 41 125 10 42 126 7 42 127 13 42 128 14 43 129 13 43 130 15 43 131 14 44 132 + 15 44 133 17 44 134 12 45 135 18 45 136 16 45 137 15 46 138 12 46 139 16 46 140 17 47 + 141 15 47 142 19 47 143 16 48 144 21 48 145 19 48 146 20 49 147 19 49 148 22 49 149 11 + 50 150 23 50 151 18 50 152 20 51 153 22 51 154 25 51 155 18 52 156 23 52 157 26 52 158 + 21 53 159 18 53 160 26 53 161 24 54 162 21 54 163 26 54 164 25 55 165 24 55 166 27 55 + 167 27 56 168 26 56 169 30 56 170 29 57 171 27 57 172 31 57 173 23 58 174 33 58 175 30 + 58 176 32 59 177 31 59 178 34 59 179 33 60 180 23 60 181 0 60 182 34 61 183 36 61 184 37 + 61 185 34 62 186 37 62 187 35 62 188 34 63 189 30 63 190 36 63 191 36 64 192 33 64 193 + 38 64 194 36 65 195 39 65 196 37 65 197 37 66 198 41 66 199 40 66 200 39 67 201 38 67 + 202 4 67 203 41 68 204 39 68 205 1 68 206 40 69 207 41 69 208 3 69 209

@@ -184,28 +296,32 @@ - -0.2908646 -0.7711008 0.5663933 4.076245 0.9551712 -0.1998833 0.2183912 1.005454 -0.05518904 0.6045247 0.7946723 5.903862 0 0 0 1 - + -0.2908646 -0.7711008 0.5663933 4.076245 0.9551712 -0.1998833 + 0.2183912 1.005454 -0.05518904 0.6045247 0.7946723 5.903862 0 0 0 1 + - 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1 - + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 + -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1 + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 - + - 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 - + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 + -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 + - -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 - + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 + 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + - +
\ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/KHR/khrplatform.h b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/KHR/khrplatform.h index 01646449c..744c94036 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/KHR/khrplatform.h +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/KHR/khrplatform.h @@ -91,7 +91,7 @@ */ #if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) -# define KHRONOS_STATIC 1 +#define KHRONOS_STATIC 1 #endif /*------------------------------------------------------------------------- @@ -100,17 +100,17 @@ * This precedes the return type of the function in the function prototype. */ #if defined(KHRONOS_STATIC) - /* If the preprocessor constant KHRONOS_STATIC is defined, make the - * header compatible with static linking. */ -# define KHRONOS_APICALL +/* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +#define KHRONOS_APICALL #elif defined(_WIN32) -# define KHRONOS_APICALL __declspec(dllimport) -#elif defined (__SYMBIAN32__) -# define KHRONOS_APICALL IMPORT_C +#define KHRONOS_APICALL __declspec(dllimport) +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C #elif defined(__ANDROID__) -# define KHRONOS_APICALL __attribute__((visibility("default"))) +#define KHRONOS_APICALL __attribute__((visibility("default"))) #else -# define KHRONOS_APICALL +#define KHRONOS_APICALL #endif /*------------------------------------------------------------------------- @@ -120,10 +120,10 @@ * name in the function prototype. */ #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) - /* Win32 but not WinCE */ -# define KHRONOS_APIENTRY __stdcall +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall #else -# define KHRONOS_APIENTRY +#define KHRONOS_APIENTRY #endif /*------------------------------------------------------------------------- @@ -131,7 +131,7 @@ *------------------------------------------------------------------------- * This follows the closing parenthesis of the function prototype arguments. */ -#if defined (__ARMCC_2__) +#if defined(__ARMCC_2__) #define KHRONOS_APIATTRIBUTES __softfp #else #define KHRONOS_APIATTRIBUTES @@ -142,17 +142,16 @@ *-----------------------------------------------------------------------*/ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) - /* * Using */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 /* * To support platform where unsigned long cannot be used interchangeably with * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. @@ -168,57 +167,57 @@ typedef uint64_t khronos_uint64_t; #endif #endif -#elif defined(__VMS ) || defined(__sgi) +#elif defined(__VMS) || defined(__sgi) /* * Using */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif defined(_WIN32) && !defined(__SCITECH_SNAP__) /* * Win32 */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif defined(__sun__) || defined(__digital__) /* * Sun or Digital */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; #if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; #else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; #endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif 0 /* * Hypothetical platform with no float or int64 support */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 #else @@ -226,23 +225,22 @@ typedef unsigned int khronos_uint32_t; * Generic fallback */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #endif - /* * Types that are (so far) the same on all platforms */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; /* * Types that differ between LLP64 and LP64 architectures - in LLP64, @@ -250,29 +248,29 @@ typedef unsigned short int khronos_uint16_t; * to be the only LLP64 architecture in current use. */ #ifdef KHRONOS_USE_INTPTR_T -typedef intptr_t khronos_intptr_t; -typedef uintptr_t khronos_uintptr_t; +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; #elif defined(_WIN64) -typedef signed long long int khronos_intptr_t; +typedef signed long long int khronos_intptr_t; typedef unsigned long long int khronos_uintptr_t; #else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; #endif #if defined(_WIN64) -typedef signed long long int khronos_ssize_t; +typedef signed long long int khronos_ssize_t; typedef unsigned long long int khronos_usize_t; #else -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; #endif #if KHRONOS_SUPPORT_FLOAT /* * Float type */ -typedef float khronos_float_t; +typedef float khronos_float_t; #endif #if KHRONOS_SUPPORT_INT64 @@ -285,8 +283,8 @@ typedef float khronos_float_t; * 64 bit value that wraps back to 0 every 584 years. Time intervals * may be either signed or unsigned. */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; #endif /* @@ -302,9 +300,10 @@ typedef khronos_int64_t khronos_stime_nanoseconds_t; * Values other than zero should be considered to be true. Therefore * comparisons should not be made against KHRONOS_TRUE. */ -typedef enum { +typedef enum +{ KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, + KHRONOS_TRUE = 1, KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM } khronos_boolean_enum_t; diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/gl_interface.hpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/gl_interface.hpp index 09e68c5cd..15a15f0cd 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/gl_interface.hpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/gl_interface.hpp @@ -43,30 +43,34 @@ #include #include - -struct GraphNode { +struct GraphNode +{ int fg_index; int bg_index; tf2::Stamped tf; }; -struct alignas(16) Vec3 { +struct alignas(16) Vec3 +{ float x, y, z; }; -struct alignas(16) Vec4 { +struct alignas(16) Vec4 +{ float x, y, z, w; }; -struct alignas(16) State { +struct alignas(16) State +{ Vec3 pos; Vec3 vel; Vec3 acc; Vec3 jerk; Vec3 collision; - State(){} - State(airstack_msgs::msg::Odometry odom){ + State() {} + State(airstack_msgs::msg::Odometry odom) + { pos.x = odom.pose.position.x; pos.y = odom.pose.position.y; pos.z = odom.pose.position.z; @@ -85,42 +89,47 @@ struct alignas(16) State { } }; -struct TrajectoryParams { +struct TrajectoryParams +{ float vel_desired[3]; float vel_max; }; -struct alignas(16) CommonInit { +struct alignas(16) CommonInit +{ State initial_state; - //int traj_count; - //int traj_size; - //float dt; + // int traj_count; + // int traj_size; + // float dt; }; -struct mat4 { +struct mat4 +{ float data[16]; - mat4(){ + mat4() + { std::memset(&data[0], 0, sizeof(data)); } - - mat4(const tf2::Stamped& stamped_tf){ - //const tf2::Transform& tf = stamped_tf.getTransform(); - const tf2::Vector3& t = stamped_tf.getOrigin(); + + mat4(const tf2::Stamped &stamped_tf) + { + // const tf2::Transform& tf = stamped_tf.getTransform(); + const tf2::Vector3 &t = stamped_tf.getOrigin(); tf2::Matrix3x3 R = stamped_tf.getBasis(); - data[0] = R[0][0]; - data[1] = R[1][0]; - data[2] = R[2][0]; - data[3] = 0.0f; + data[0] = R[0][0]; + data[1] = R[1][0]; + data[2] = R[2][0]; + data[3] = 0.0f; - data[4] = R[0][1]; - data[5] = R[1][1]; - data[6] = R[2][1]; - data[7] = 0.0f; + data[4] = R[0][1]; + data[5] = R[1][1]; + data[6] = R[2][1]; + data[7] = 0.0f; - data[8] = R[0][2]; - data[9] = R[1][2]; + data[8] = R[0][2]; + data[9] = R[1][2]; data[10] = R[2][2]; data[11] = 0.0f; @@ -130,22 +139,23 @@ struct mat4 { data[15] = 1.0f; } - mat4(const tf2::Transform& stamped_tf){ - const tf2::Vector3& t = stamped_tf.getOrigin(); + mat4(const tf2::Transform &stamped_tf) + { + const tf2::Vector3 &t = stamped_tf.getOrigin(); tf2::Matrix3x3 R = stamped_tf.getBasis(); - data[0] = R[0][0]; - data[1] = R[1][0]; - data[2] = R[2][0]; - data[3] = 0.0f; + data[0] = R[0][0]; + data[1] = R[1][0]; + data[2] = R[2][0]; + data[3] = 0.0f; - data[4] = R[0][1]; - data[5] = R[1][1]; - data[6] = R[2][1]; - data[7] = 0.0f; + data[4] = R[0][1]; + data[5] = R[1][1]; + data[6] = R[2][1]; + data[7] = 0.0f; - data[8] = R[0][2]; - data[9] = R[1][2]; + data[8] = R[0][2]; + data[9] = R[1][2]; data[10] = R[2][2]; data[11] = 0.0f; @@ -156,7 +166,8 @@ struct mat4 { } }; -struct alignas(16) CollisionInfo { +struct alignas(16) CollisionInfo +{ mat4 state_tf; float fx, fy, cx, cy; float baseline; @@ -167,25 +178,27 @@ struct alignas(16) CollisionInfo { int graph_nodes; }; -struct alignas(16) TrajectoryPoint { +struct alignas(16) TrajectoryPoint +{ Vec4 v1, v2; - - float x(){return v1.x;} - float y(){return v1.y;} - float z(){return v1.z;} - float w(){return v1.w;} - float get_vel(){return v2.w;} + float x() { return v1.x; } + float y() { return v1.y; } + float z() { return v1.z; } + float w() { return v1.w; } - int get_collision(){return v2.x;} - int get_unseen(){return v2.y;} - int get_seen(){return v2.z;} + float get_vel() { return v2.w; } + + int get_collision() { return v2.x; } + int get_unseen() { return v2.y; } + int get_seen() { return v2.z; } }; -class GLInterface { +class GLInterface +{ private: - rclcpp::Node* node; - tf2_ros::Buffer* tf_buffer; + rclcpp::Node *node; + tf2_ros::Buffer *tf_buffer; bool gl_inited; @@ -200,7 +213,7 @@ class GLInterface { float graph_distance_threshold, graph_angle_threshold; int current_node, graph_nodes, total_layers; - + GLuint texIn, fgHoriz, bgHoriz, fgFinal, bgFinal; std::deque graph; @@ -214,28 +227,27 @@ class GLInterface { GLuint traj_shader, collision_shader, traj_collision_shader; GLuint common_ubo, collision_info_ubo; GLuint params_ssbo, traj_ssbo, transform_ssbo; - + GLuint elapsed_query; vis::MarkerArray graph_markers; - + public: - GLInterface(rclcpp::Node* node, tf2_ros::Buffer* tf_buffer); + GLInterface(rclcpp::Node *node, tf2_ros::Buffer *tf_buffer); void handle_camera_info(const sensor_msgs::msg::CameraInfo::SharedPtr msg); void handle_disparity(const stereo_msgs::msg::DisparityImage::SharedPtr msg); void publish_viz(const std_msgs::msg::Header &hdr, - rclcpp::Publisher::SharedPtr fg_pub, - rclcpp::Publisher::SharedPtr bg_pub, - rclcpp::Publisher::SharedPtr fg_bg_cloud_pub, - rclcpp::Publisher::SharedPtr marker_pub); - void evaluate_trajectories(const airstack_msgs::msg::Odometry& look_ahead, std::vector& trajectory_points, tf2::Transform& look_ahead_to_target_tf); + rclcpp::Publisher::SharedPtr fg_pub, + rclcpp::Publisher::SharedPtr bg_pub, + rclcpp::Publisher::SharedPtr fg_bg_cloud_pub, + rclcpp::Publisher::SharedPtr marker_pub); + void evaluate_trajectories(const airstack_msgs::msg::Odometry &look_ahead, std::vector &trajectory_points, tf2::Transform &look_ahead_to_target_tf); int get_traj_size(); void check_gl_error(); void gl_tic(); float gl_toc(); - + void initGL(int original_width, int original_height, int downsampled_width, int downsampled_height); GLuint createComputeShader(const std::string &file); - }; diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/global_plan.hpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/global_plan.hpp index 49e2d0413..cc53b7573 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/global_plan.hpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/global_plan.hpp @@ -40,10 +40,11 @@ #include #include -class GlobalPlan { +class GlobalPlan +{ private: - rclcpp::Node* node; - tf2_ros::Buffer* tf_buffer; + rclcpp::Node *node; + tf2_ros::Buffer *tf_buffer; std::string target_frame; int current_global_plan_id, next_global_plan_id; @@ -51,11 +52,11 @@ class GlobalPlan { Trajectory global_plan; bool update_global_plan(); - + public: - GlobalPlan(rclcpp::Node* node, tf2_ros::Buffer* tf_buffer); + GlobalPlan(rclcpp::Node *node, tf2_ros::Buffer *tf_buffer); void set_global_plan(const nav_msgs::msg::Path::SharedPtr msg); - void trim(const airstack_msgs::msg::Odometry& msg); + void trim(const airstack_msgs::msg::Odometry &msg); std::tuple get_distance(float x, float y, float z); void publish_vis(rclcpp::Publisher::SharedPtr pub); void apply_smooth_yaw(airstack_msgs::msg::TrajectoryXYZVYaw &best_traj_msg, const airstack_msgs::msg::Odometry look_ahead); diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/rewind_monitor.hpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/rewind_monitor.hpp index 029b55080..00fd77104 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/rewind_monitor.hpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/droan_gl/rewind_monitor.hpp @@ -43,27 +43,30 @@ #include #include -struct Rewind { +struct Rewind +{ bool valid; float start_time; tf2::Vector3 start_position; - + float duration; float distance; - Rewind(){ + Rewind() + { valid = false; } }; -class RewindMonitor { +class RewindMonitor +{ private: - rclcpp::Node* node; - + rclcpp::Node *node; + float all_in_collision_duration_threshold; float all_in_collision_rewind_duration; float all_in_collision_start_time; - + float stationary_distance_threshold; float stationary_history_duration; float stationary_rewind_distance, stationary_rewind_duration; @@ -72,18 +75,17 @@ class RewindMonitor { Rewind rewind; - std::deque > positions; + std::deque> positions; - visualization_msgs::msg::Marker clear, rewind_info_marker; - + public: - RewindMonitor(rclcpp::Node* node); + RewindMonitor(rclcpp::Node *node); void update_odom(const airstack_msgs::msg::Odometry::SharedPtr odom); void do_stationary_check(bool b); void found_trajectory(bool b); - void trigger_rewind(float duration, float distance=-1.f); + void trigger_rewind(float duration, float distance = -1.f); bool should_rewind(); void clear_history(); void publish_vis(rclcpp::Publisher::SharedPtr pub, std::string frame_id); diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/glad/glad.h b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/glad/glad.h index 12c9b2c06..916b0a28d 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/glad/glad.h +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/include/glad/glad.h @@ -7,7 +7,7 @@ APIs: gl=4.6 Profile: core Extensions: - + Loader: True Local files: False Omit khrplatform: False @@ -19,7 +19,6 @@ https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.6 */ - #ifndef __glad_h_ #define __glad_h_ @@ -44,95 +43,97 @@ #endif #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -struct gladGLversionStruct { - int major; - int minor; -}; + struct gladGLversionStruct + { + int major; + int minor; + }; -typedef void* (* GLADloadproc)(const char *name); + typedef void *(*GLADloadproc)(const char *name); #ifndef GLAPI -# if defined(GLAD_GLAPI_EXPORT) -# if defined(_WIN32) || defined(__CYGWIN__) -# if defined(GLAD_GLAPI_EXPORT_BUILD) -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllexport)) extern -# else -# define GLAPI __declspec(dllexport) extern -# endif -# else -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllimport)) extern -# else -# define GLAPI __declspec(dllimport) extern -# endif -# endif -# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) -# define GLAPI __attribute__ ((visibility ("default"))) extern -# else -# define GLAPI extern -# endif -# else -# define GLAPI extern -# endif +#if defined(GLAD_GLAPI_EXPORT) +#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(GLAD_GLAPI_EXPORT_BUILD) +#if defined(__GNUC__) +#define GLAPI __attribute__((dllexport)) extern +#else +#define GLAPI __declspec(dllexport) extern +#endif +#else +#if defined(__GNUC__) +#define GLAPI __attribute__((dllimport)) extern +#else +#define GLAPI __declspec(dllimport) extern +#endif +#endif +#elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +#define GLAPI __attribute__((visibility("default"))) extern +#else +#define GLAPI extern +#endif +#else +#define GLAPI extern +#endif #endif -GLAPI struct gladGLversionStruct GLVersion; + GLAPI struct gladGLversionStruct GLVersion; -GLAPI int gladLoadGL(void); + GLAPI int gladLoadGL(void); -GLAPI int gladLoadGLLoader(GLADloadproc); + GLAPI int gladLoadGLLoader(GLADloadproc); #include -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef void GLvoid; -typedef khronos_int8_t GLbyte; -typedef khronos_uint8_t GLubyte; -typedef khronos_int16_t GLshort; -typedef khronos_uint16_t GLushort; -typedef int GLint; -typedef unsigned int GLuint; -typedef khronos_int32_t GLclampx; -typedef int GLsizei; -typedef khronos_float_t GLfloat; -typedef khronos_float_t GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void *GLeglClientBufferEXT; -typedef void *GLeglImageOES; -typedef char GLchar; -typedef char GLcharARB; + typedef unsigned int GLenum; + typedef unsigned char GLboolean; + typedef unsigned int GLbitfield; + typedef void GLvoid; + typedef khronos_int8_t GLbyte; + typedef khronos_uint8_t GLubyte; + typedef khronos_int16_t GLshort; + typedef khronos_uint16_t GLushort; + typedef int GLint; + typedef unsigned int GLuint; + typedef khronos_int32_t GLclampx; + typedef int GLsizei; + typedef khronos_float_t GLfloat; + typedef khronos_float_t GLclampf; + typedef double GLdouble; + typedef double GLclampd; + typedef void *GLeglClientBufferEXT; + typedef void *GLeglImageOES; + typedef char GLchar; + typedef char GLcharARB; #ifdef __APPLE__ -typedef void *GLhandleARB; + typedef void *GLhandleARB; #else typedef unsigned int GLhandleARB; #endif -typedef khronos_uint16_t GLhalf; -typedef khronos_uint16_t GLhalfARB; -typedef khronos_int32_t GLfixed; -typedef khronos_intptr_t GLintptr; -typedef khronos_intptr_t GLintptrARB; -typedef khronos_ssize_t GLsizeiptr; -typedef khronos_ssize_t GLsizeiptrARB; -typedef khronos_int64_t GLint64; -typedef khronos_int64_t GLint64EXT; -typedef khronos_uint64_t GLuint64; -typedef khronos_uint64_t GLuint64EXT; -typedef struct __GLsync *GLsync; -struct _cl_context; -struct _cl_event; -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); -typedef unsigned short GLhalfNV; -typedef GLintptr GLvdpauSurfaceNV; -typedef void (APIENTRY *GLVULKANPROCNV)(void); + typedef khronos_uint16_t GLhalf; + typedef khronos_uint16_t GLhalfARB; + typedef khronos_int32_t GLfixed; + typedef khronos_intptr_t GLintptr; + typedef khronos_intptr_t GLintptrARB; + typedef khronos_ssize_t GLsizeiptr; + typedef khronos_ssize_t GLsizeiptrARB; + typedef khronos_int64_t GLint64; + typedef khronos_int64_t GLint64EXT; + typedef khronos_uint64_t GLuint64; + typedef khronos_uint64_t GLuint64EXT; + typedef struct __GLsync *GLsync; + struct _cl_context; + struct _cl_event; + typedef void(APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam); + typedef void(APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam); + typedef void(APIENTRY *GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam); + typedef void(APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); + typedef unsigned short GLhalfNV; + typedef GLintptr GLvdpauSurfaceNV; + typedef void(APIENTRY *GLVULKANPROCNV)(void); #define GL_DEPTH_BUFFER_BIT 0x00000100 #define GL_STENCIL_BUFFER_BIT 0x00000400 #define GL_COLOR_BUFFER_BIT 0x00004000 @@ -1515,2175 +1516,2175 @@ typedef void (APIENTRY *GLVULKANPROCNV)(void); #define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED #ifndef GL_VERSION_1_0 #define GL_VERSION_1_0 1 -GLAPI int GLAD_GL_VERSION_1_0; -typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); -GLAPI PFNGLCULLFACEPROC glad_glCullFace; + GLAPI int GLAD_GL_VERSION_1_0; + typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); + GLAPI PFNGLCULLFACEPROC glad_glCullFace; #define glCullFace glad_glCullFace -typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); -GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; + typedef void(APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); + GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; #define glFrontFace glad_glFrontFace -typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); -GLAPI PFNGLHINTPROC glad_glHint; + typedef void(APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); + GLAPI PFNGLHINTPROC glad_glHint; #define glHint glad_glHint -typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); -GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; + typedef void(APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); + GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; #define glLineWidth glad_glLineWidth -typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); -GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; + typedef void(APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); + GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; #define glPointSize glad_glPointSize -typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); -GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; + typedef void(APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); + GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; #define glPolygonMode glad_glPolygonMode -typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLSCISSORPROC glad_glScissor; + typedef void(APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLSCISSORPROC glad_glScissor; #define glScissor glad_glScissor -typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); -GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; + typedef void(APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); + GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; #define glTexParameterf glad_glTexParameterf -typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); -GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; + typedef void(APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); + GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; #define glTexParameterfv glad_glTexParameterfv -typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; + typedef void(APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); + GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; #define glTexParameteri glad_glTexParameteri -typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); -GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; + typedef void(APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); + GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; #define glTexParameteriv glad_glTexParameteriv -typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; + typedef void(APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; #define glTexImage1D glad_glTexImage1D -typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; + typedef void(APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; #define glTexImage2D glad_glTexImage2D -typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); -GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; + typedef void(APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); + GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; #define glDrawBuffer glad_glDrawBuffer -typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); -GLAPI PFNGLCLEARPROC glad_glClear; + typedef void(APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); + GLAPI PFNGLCLEARPROC glad_glClear; #define glClear glad_glClear -typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; + typedef void(APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; #define glClearColor glad_glClearColor -typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); -GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; + typedef void(APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); + GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; #define glClearStencil glad_glClearStencil -typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); -GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; + typedef void(APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); + GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; #define glClearDepth glad_glClearDepth -typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); -GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; + typedef void(APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); + GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; #define glStencilMask glad_glStencilMask -typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI PFNGLCOLORMASKPROC glad_glColorMask; + typedef void(APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + GLAPI PFNGLCOLORMASKPROC glad_glColorMask; #define glColorMask glad_glColorMask -typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); -GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; + typedef void(APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); + GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; #define glDepthMask glad_glDepthMask -typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); -GLAPI PFNGLDISABLEPROC glad_glDisable; + typedef void(APIENTRYP PFNGLDISABLEPROC)(GLenum cap); + GLAPI PFNGLDISABLEPROC glad_glDisable; #define glDisable glad_glDisable -typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); -GLAPI PFNGLENABLEPROC glad_glEnable; + typedef void(APIENTRYP PFNGLENABLEPROC)(GLenum cap); + GLAPI PFNGLENABLEPROC glad_glEnable; #define glEnable glad_glEnable -typedef void (APIENTRYP PFNGLFINISHPROC)(void); -GLAPI PFNGLFINISHPROC glad_glFinish; + typedef void(APIENTRYP PFNGLFINISHPROC)(void); + GLAPI PFNGLFINISHPROC glad_glFinish; #define glFinish glad_glFinish -typedef void (APIENTRYP PFNGLFLUSHPROC)(void); -GLAPI PFNGLFLUSHPROC glad_glFlush; + typedef void(APIENTRYP PFNGLFLUSHPROC)(void); + GLAPI PFNGLFLUSHPROC glad_glFlush; #define glFlush glad_glFlush -typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); -GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; + typedef void(APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); + GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; #define glBlendFunc glad_glBlendFunc -typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); -GLAPI PFNGLLOGICOPPROC glad_glLogicOp; + typedef void(APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); + GLAPI PFNGLLOGICOPPROC glad_glLogicOp; #define glLogicOp glad_glLogicOp -typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; + typedef void(APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); + GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; #define glStencilFunc glad_glStencilFunc -typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); -GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; + typedef void(APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); + GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; #define glStencilOp glad_glStencilOp -typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); -GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; + typedef void(APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); + GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; #define glDepthFunc glad_glDepthFunc -typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); -GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; + typedef void(APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); + GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; #define glPixelStoref glad_glPixelStoref -typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); -GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; + typedef void(APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); + GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; #define glPixelStorei glad_glPixelStorei -typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); -GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; + typedef void(APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); + GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; #define glReadBuffer glad_glReadBuffer -typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); -GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; + typedef void(APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; #define glReadPixels glad_glReadPixels -typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); -GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; + typedef void(APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); + GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; #define glGetBooleanv glad_glGetBooleanv -typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); -GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; + typedef void(APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); + GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; #define glGetDoublev glad_glGetDoublev -typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); -GLAPI PFNGLGETERRORPROC glad_glGetError; + typedef GLenum(APIENTRYP PFNGLGETERRORPROC)(void); + GLAPI PFNGLGETERRORPROC glad_glGetError; #define glGetError glad_glGetError -typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); -GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; + typedef void(APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); + GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; #define glGetFloatv glad_glGetFloatv -typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); -GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; + typedef void(APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); + GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; #define glGetIntegerv glad_glGetIntegerv -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); -GLAPI PFNGLGETSTRINGPROC glad_glGetString; + typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); + GLAPI PFNGLGETSTRINGPROC glad_glGetString; #define glGetString glad_glGetString -typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); -GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; + typedef void(APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); + GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; #define glGetTexImage glad_glGetTexImage -typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; + typedef void(APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); + GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; #define glGetTexParameterfv glad_glGetTexParameterfv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; #define glGetTexParameteriv glad_glGetTexParameteriv -typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; + typedef void(APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); + GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; #define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv -typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; + typedef void(APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; #define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv -typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); -GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; + typedef GLboolean(APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); + GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; #define glIsEnabled glad_glIsEnabled -typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); -GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; + typedef void(APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); + GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; #define glDepthRange glad_glDepthRange -typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLVIEWPORTPROC glad_glViewport; + typedef void(APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLVIEWPORTPROC glad_glViewport; #define glViewport glad_glViewport #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 -GLAPI int GLAD_GL_VERSION_1_1; -typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); -GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; + GLAPI int GLAD_GL_VERSION_1_1; + typedef void(APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); + GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; #define glDrawArrays glad_glDrawArrays -typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); -GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; + typedef void(APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); + GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; #define glDrawElements glad_glDrawElements -typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); -GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; + typedef void(APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); + GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; #define glPolygonOffset glad_glPolygonOffset -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; #define glCopyTexImage1D glad_glCopyTexImage1D -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; #define glCopyTexImage2D glad_glCopyTexImage2D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; #define glCopyTexSubImage1D glad_glCopyTexSubImage1D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; #define glCopyTexSubImage2D glad_glCopyTexSubImage2D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; + typedef void(APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; #define glTexSubImage1D glad_glTexSubImage1D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; + typedef void(APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; #define glTexSubImage2D glad_glTexSubImage2D -typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); -GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; + typedef void(APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); + GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; #define glBindTexture glad_glBindTexture -typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); -GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; + typedef void(APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); + GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; #define glDeleteTextures glad_glDeleteTextures -typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); -GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; + typedef void(APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); + GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; #define glGenTextures glad_glGenTextures -typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); -GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; + typedef GLboolean(APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); + GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; #define glIsTexture glad_glIsTexture #endif #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 -GLAPI int GLAD_GL_VERSION_1_2; -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); -GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; + GLAPI int GLAD_GL_VERSION_1_2; + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; #define glDrawRangeElements glad_glDrawRangeElements -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; + typedef void(APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; #define glTexImage3D glad_glTexImage3D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; + typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; #define glTexSubImage3D glad_glTexSubImage3D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; #define glCopyTexSubImage3D glad_glCopyTexSubImage3D #endif #ifndef GL_VERSION_1_3 #define GL_VERSION_1_3 1 -GLAPI int GLAD_GL_VERSION_1_3; -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); -GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; + GLAPI int GLAD_GL_VERSION_1_3; + typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); + GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; #define glActiveTexture glad_glActiveTexture -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); -GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; + typedef void(APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); + GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; #define glSampleCoverage glad_glSampleCoverage -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; #define glCompressedTexImage3D glad_glCompressedTexImage3D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; #define glCompressedTexImage2D glad_glCompressedTexImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; #define glCompressedTexImage1D glad_glCompressedTexImage1D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; #define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; #define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; #define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); -GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); + GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; #define glGetCompressedTexImage glad_glGetCompressedTexImage #endif #ifndef GL_VERSION_1_4 #define GL_VERSION_1_4 1 -GLAPI int GLAD_GL_VERSION_1_4; -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; + GLAPI int GLAD_GL_VERSION_1_4; + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; #define glBlendFuncSeparate glad_glBlendFuncSeparate -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; #define glMultiDrawArrays glad_glMultiDrawArrays -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); -GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount); + GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; #define glMultiDrawElements glad_glMultiDrawElements -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); -GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; + typedef void(APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); + GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; #define glPointParameterf glad_glPointParameterf -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); -GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); + GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; #define glPointParameterfv glad_glPointParameterfv -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); -GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; + typedef void(APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); + GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; #define glPointParameteri glad_glPointParameteri -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); -GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; + typedef void(APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); + GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; #define glPointParameteriv glad_glPointParameteriv -typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; + typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; #define glBlendColor glad_glBlendColor -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); -GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; + typedef void(APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); + GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; #define glBlendEquation glad_glBlendEquation #endif #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 -GLAPI int GLAD_GL_VERSION_1_5; -typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); -GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; + GLAPI int GLAD_GL_VERSION_1_5; + typedef void(APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); + GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; #define glGenQueries glad_glGenQueries -typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); -GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; + typedef void(APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); + GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; #define glDeleteQueries glad_glDeleteQueries -typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); -GLAPI PFNGLISQUERYPROC glad_glIsQuery; + typedef GLboolean(APIENTRYP PFNGLISQUERYPROC)(GLuint id); + GLAPI PFNGLISQUERYPROC glad_glIsQuery; #define glIsQuery glad_glIsQuery -typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); -GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; + typedef void(APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); + GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; #define glBeginQuery glad_glBeginQuery -typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); -GLAPI PFNGLENDQUERYPROC glad_glEndQuery; + typedef void(APIENTRYP PFNGLENDQUERYPROC)(GLenum target); + GLAPI PFNGLENDQUERYPROC glad_glEndQuery; #define glEndQuery glad_glEndQuery -typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; + typedef void(APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; #define glGetQueryiv glad_glGetQueryiv -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; + typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); + GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; #define glGetQueryObjectiv glad_glGetQueryObjectiv -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); -GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); + GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; #define glGetQueryObjectuiv glad_glGetQueryObjectuiv -typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); -GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; + typedef void(APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); + GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; #define glBindBuffer glad_glBindBuffer -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); -GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; + typedef void(APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); + GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; #define glDeleteBuffers glad_glDeleteBuffers -typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); -GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; + typedef void(APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); + GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; #define glGenBuffers glad_glGenBuffers -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); -GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; + typedef GLboolean(APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); + GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; #define glIsBuffer glad_glIsBuffer -typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); -GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; + typedef void(APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); + GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; #define glBufferData glad_glBufferData -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); -GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; + typedef void(APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; #define glBufferSubData glad_glBufferSubData -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); -GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; + typedef void(APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; #define glGetBufferSubData glad_glGetBufferSubData -typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); -GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; + typedef void *(APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); + GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; #define glMapBuffer glad_glMapBuffer -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); -GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; + typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); + GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; #define glUnmapBuffer glad_glUnmapBuffer -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; #define glGetBufferParameteriv glad_glGetBufferParameteriv -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); -GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; + typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); + GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; #define glGetBufferPointerv glad_glGetBufferPointerv #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 -GLAPI int GLAD_GL_VERSION_2_0; -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); -GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; + GLAPI int GLAD_GL_VERSION_2_0; + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); + GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; #define glBlendEquationSeparate glad_glBlendEquationSeparate -typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); -GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; + typedef void(APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); + GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; #define glDrawBuffers glad_glDrawBuffers -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; + typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; #define glStencilOpSeparate glad_glStencilOpSeparate -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; + typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); + GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; #define glStencilFuncSeparate glad_glStencilFuncSeparate -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); -GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; + typedef void(APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); + GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; #define glStencilMaskSeparate glad_glStencilMaskSeparate -typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; + typedef void(APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); + GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; #define glAttachShader glad_glAttachShader -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); -GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; + typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); + GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; #define glBindAttribLocation glad_glBindAttribLocation -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); -GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; + typedef void(APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); + GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; #define glCompileShader glad_glCompileShader -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); -GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; + typedef GLuint(APIENTRYP PFNGLCREATEPROGRAMPROC)(void); + GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; #define glCreateProgram glad_glCreateProgram -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); -GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); + GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; #define glCreateShader glad_glCreateShader -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); -GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; + typedef void(APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); + GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; #define glDeleteProgram glad_glDeleteProgram -typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); -GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; + typedef void(APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); + GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; #define glDeleteShader glad_glDeleteShader -typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; + typedef void(APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); + GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; #define glDetachShader glad_glDetachShader -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; + typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); + GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; #define glDisableVertexAttribArray glad_glDisableVertexAttribArray -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; + typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); + GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; #define glEnableVertexAttribArray glad_glEnableVertexAttribArray -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; + typedef void(APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; #define glGetActiveAttrib glad_glGetActiveAttrib -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; #define glGetActiveUniform glad_glGetActiveUniform -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; + typedef void(APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); + GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; #define glGetAttachedShaders glad_glGetAttachedShaders -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; + typedef GLint(APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); + GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; #define glGetAttribLocation glad_glGetAttribLocation -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; + typedef void(APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); + GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; #define glGetProgramiv glad_glGetProgramiv -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; + typedef void(APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; #define glGetProgramInfoLog glad_glGetProgramInfoLog -typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); -GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; + typedef void(APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); + GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; #define glGetShaderiv glad_glGetShaderiv -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; + typedef void(APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; #define glGetShaderInfoLog glad_glGetShaderInfoLog -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; + typedef void(APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; #define glGetShaderSource glad_glGetShaderSource -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; + typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); + GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; #define glGetUniformLocation glad_glGetUniformLocation -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); -GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; + typedef void(APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); + GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; #define glGetUniformfv glad_glGetUniformfv -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); -GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; + typedef void(APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); + GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; #define glGetUniformiv glad_glGetUniformiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); -GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); + GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; #define glGetVertexAttribdv glad_glGetVertexAttribdv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); -GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); + GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; #define glGetVertexAttribfv glad_glGetVertexAttribfv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); + GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; #define glGetVertexAttribiv glad_glGetVertexAttribiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); -GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); + GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; #define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); -GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; + typedef GLboolean(APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); + GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; #define glIsProgram glad_glIsProgram -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); -GLAPI PFNGLISSHADERPROC glad_glIsShader; + typedef GLboolean(APIENTRYP PFNGLISSHADERPROC)(GLuint shader); + GLAPI PFNGLISSHADERPROC glad_glIsShader; #define glIsShader glad_glIsShader -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); -GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; + typedef void(APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); + GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; #define glLinkProgram glad_glLinkProgram -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; + typedef void(APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length); + GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; #define glShaderSource glad_glShaderSource -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); -GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; + typedef void(APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); + GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; #define glUseProgram glad_glUseProgram -typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); -GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; + typedef void(APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); + GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; #define glUniform1f glad_glUniform1f -typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); -GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; + typedef void(APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); + GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; #define glUniform2f glad_glUniform2f -typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; + typedef void(APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; #define glUniform3f glad_glUniform3f -typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; + typedef void(APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; #define glUniform4f glad_glUniform4f -typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); -GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; + typedef void(APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); + GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; #define glUniform1i glad_glUniform1i -typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); -GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; + typedef void(APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); + GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; #define glUniform2i glad_glUniform2i -typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); -GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; + typedef void(APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); + GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; #define glUniform3i glad_glUniform3i -typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; + typedef void(APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; #define glUniform4i glad_glUniform4i -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; + typedef void(APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; #define glUniform1fv glad_glUniform1fv -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; + typedef void(APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; #define glUniform2fv glad_glUniform2fv -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; + typedef void(APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; #define glUniform3fv glad_glUniform3fv -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; + typedef void(APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; #define glUniform4fv glad_glUniform4fv -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; + typedef void(APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; #define glUniform1iv glad_glUniform1iv -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; + typedef void(APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; #define glUniform2iv glad_glUniform2iv -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; + typedef void(APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; #define glUniform3iv glad_glUniform3iv -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; + typedef void(APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; #define glUniform4iv glad_glUniform4iv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; #define glUniformMatrix2fv glad_glUniformMatrix2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; #define glUniformMatrix3fv glad_glUniformMatrix3fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; #define glUniformMatrix4fv glad_glUniformMatrix4fv -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); -GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); + GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; #define glValidateProgram glad_glValidateProgram -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); -GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); + GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; #define glVertexAttrib1d glad_glVertexAttrib1d -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; #define glVertexAttrib1dv glad_glVertexAttrib1dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); -GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); + GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; #define glVertexAttrib1f glad_glVertexAttrib1f -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); + GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; #define glVertexAttrib1fv glad_glVertexAttrib1fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); -GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); + GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; #define glVertexAttrib1s glad_glVertexAttrib1s -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; #define glVertexAttrib1sv glad_glVertexAttrib1sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); -GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); + GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; #define glVertexAttrib2d glad_glVertexAttrib2d -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; #define glVertexAttrib2dv glad_glVertexAttrib2dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); -GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); + GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; #define glVertexAttrib2f glad_glVertexAttrib2f -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); + GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; #define glVertexAttrib2fv glad_glVertexAttrib2fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); -GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); + GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; #define glVertexAttrib2s glad_glVertexAttrib2s -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; #define glVertexAttrib2sv glad_glVertexAttrib2sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; #define glVertexAttrib3d glad_glVertexAttrib3d -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; #define glVertexAttrib3dv glad_glVertexAttrib3dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; #define glVertexAttrib3f glad_glVertexAttrib3f -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); + GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; #define glVertexAttrib3fv glad_glVertexAttrib3fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); -GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); + GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; #define glVertexAttrib3s glad_glVertexAttrib3s -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; #define glVertexAttrib3sv glad_glVertexAttrib3sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); + GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; #define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; #define glVertexAttrib4Niv glad_glVertexAttrib4Niv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; #define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; #define glVertexAttrib4Nub glad_glVertexAttrib4Nub -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); + GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; #define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; #define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); + GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; #define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); + GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; #define glVertexAttrib4bv glad_glVertexAttrib4bv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; #define glVertexAttrib4d glad_glVertexAttrib4d -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; #define glVertexAttrib4dv glad_glVertexAttrib4dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; #define glVertexAttrib4f glad_glVertexAttrib4f -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); + GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; #define glVertexAttrib4fv glad_glVertexAttrib4fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; #define glVertexAttrib4iv glad_glVertexAttrib4iv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; #define glVertexAttrib4s glad_glVertexAttrib4s -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; #define glVertexAttrib4sv glad_glVertexAttrib4sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); + GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; #define glVertexAttrib4ubv glad_glVertexAttrib4ubv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; #define glVertexAttrib4uiv glad_glVertexAttrib4uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; + typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); + GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; #define glVertexAttrib4usv glad_glVertexAttrib4usv -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; + typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); + GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; #define glVertexAttribPointer glad_glVertexAttribPointer #endif #ifndef GL_VERSION_2_1 #define GL_VERSION_2_1 1 -GLAPI int GLAD_GL_VERSION_2_1; -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; + GLAPI int GLAD_GL_VERSION_2_1; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; #define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; #define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; #define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; #define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; #define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; #define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv #endif #ifndef GL_VERSION_3_0 #define GL_VERSION_3_0 1 -GLAPI int GLAD_GL_VERSION_3_0; -typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; + GLAPI int GLAD_GL_VERSION_3_0; + typedef void(APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; #define glColorMaski glad_glColorMaski -typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); -GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; + typedef void(APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); + GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; #define glGetBooleani_v glad_glGetBooleani_v -typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); -GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; + typedef void(APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); + GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; #define glGetIntegeri_v glad_glGetIntegeri_v -typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); -GLAPI PFNGLENABLEIPROC glad_glEnablei; + typedef void(APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); + GLAPI PFNGLENABLEIPROC glad_glEnablei; #define glEnablei glad_glEnablei -typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); -GLAPI PFNGLDISABLEIPROC glad_glDisablei; + typedef void(APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); + GLAPI PFNGLDISABLEIPROC glad_glDisablei; #define glDisablei glad_glDisablei -typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); -GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; + typedef GLboolean(APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); + GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; #define glIsEnabledi glad_glIsEnabledi -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); -GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; + typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); + GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; #define glBeginTransformFeedback glad_glBeginTransformFeedback -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; + typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); + GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; #define glEndTransformFeedback glad_glEndTransformFeedback -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; + typedef void(APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; #define glBindBufferRange glad_glBindBufferRange -typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); -GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; + typedef void(APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); + GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; #define glBindBufferBase glad_glBindBufferBase -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); + GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; #define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; #define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying -typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); -GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; + typedef void(APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); + GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; #define glClampColor glad_glClampColor -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); -GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); + GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; #define glBeginConditionalRender glad_glBeginConditionalRender -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); -GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); + GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; #define glEndConditionalRender glad_glEndConditionalRender -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; + typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; #define glVertexAttribIPointer glad_glVertexAttribIPointer -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); + GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; #define glGetVertexAttribIiv glad_glGetVertexAttribIiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); -GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); + GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; #define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); -GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); + GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; #define glVertexAttribI1i glad_glVertexAttribI1i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); -GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); + GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; #define glVertexAttribI2i glad_glVertexAttribI2i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); -GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); + GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; #define glVertexAttribI3i glad_glVertexAttribI3i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; #define glVertexAttribI4i glad_glVertexAttribI4i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); -GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); + GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; #define glVertexAttribI1ui glad_glVertexAttribI1ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); -GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); + GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; #define glVertexAttribI2ui glad_glVertexAttribI2ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); -GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); + GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; #define glVertexAttribI3ui glad_glVertexAttribI3ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; #define glVertexAttribI4ui glad_glVertexAttribI4ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; #define glVertexAttribI1iv glad_glVertexAttribI1iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; #define glVertexAttribI2iv glad_glVertexAttribI2iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; #define glVertexAttribI3iv glad_glVertexAttribI3iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; #define glVertexAttribI4iv glad_glVertexAttribI4iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; #define glVertexAttribI1uiv glad_glVertexAttribI1uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; #define glVertexAttribI2uiv glad_glVertexAttribI2uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; #define glVertexAttribI3uiv glad_glVertexAttribI3uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); + GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; #define glVertexAttribI4uiv glad_glVertexAttribI4uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); + GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; #define glVertexAttribI4bv glad_glVertexAttribI4bv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); + GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; #define glVertexAttribI4sv glad_glVertexAttribI4sv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); + GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; #define glVertexAttribI4ubv glad_glVertexAttribI4ubv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); + GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; #define glVertexAttribI4usv glad_glVertexAttribI4usv -typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); -GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; + typedef void(APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); + GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; #define glGetUniformuiv glad_glGetUniformuiv -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); -GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); + GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; #define glBindFragDataLocation glad_glBindFragDataLocation -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; + typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); + GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; #define glGetFragDataLocation glad_glGetFragDataLocation -typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); -GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; + typedef void(APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); + GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; #define glUniform1ui glad_glUniform1ui -typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); -GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; + typedef void(APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); + GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; #define glUniform2ui glad_glUniform2ui -typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; + typedef void(APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; #define glUniform3ui glad_glUniform3ui -typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; + typedef void(APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; #define glUniform4ui glad_glUniform4ui -typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; + typedef void(APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; #define glUniform1uiv glad_glUniform1uiv -typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; + typedef void(APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; #define glUniform2uiv glad_glUniform2uiv -typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; + typedef void(APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; #define glUniform3uiv glad_glUniform3uiv -typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; + typedef void(APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; #define glUniform4uiv glad_glUniform4uiv -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); -GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; + typedef void(APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); + GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; #define glTexParameterIiv glad_glTexParameterIiv -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); -GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; + typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); + GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; #define glTexParameterIuiv glad_glTexParameterIuiv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; #define glGetTexParameterIiv glad_glGetTexParameterIiv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); -GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); + GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; #define glGetTexParameterIuiv glad_glGetTexParameterIuiv -typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); -GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; + typedef void(APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); + GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; #define glClearBufferiv glad_glClearBufferiv -typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); -GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; + typedef void(APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); + GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; #define glClearBufferuiv glad_glClearBufferuiv -typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); -GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; + typedef void(APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); + GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; #define glClearBufferfv glad_glClearBufferfv -typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; + typedef void(APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; #define glClearBufferfi glad_glClearBufferfi -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); -GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; + typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); + GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; #define glGetStringi glad_glGetStringi -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); -GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; + typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); + GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; #define glIsRenderbuffer glad_glIsRenderbuffer -typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); -GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; + typedef void(APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); + GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; #define glBindRenderbuffer glad_glBindRenderbuffer -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); -GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; + typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); + GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; #define glDeleteRenderbuffers glad_glDeleteRenderbuffers -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; + typedef void(APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); + GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; #define glGenRenderbuffers glad_glGenRenderbuffers -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; #define glRenderbufferStorage glad_glRenderbufferStorage -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; + typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; #define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); -GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; + typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); + GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; #define glIsFramebuffer glad_glIsFramebuffer -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); -GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; + typedef void(APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); + GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; #define glBindFramebuffer glad_glBindFramebuffer -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); -GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; + typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); + GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; #define glDeleteFramebuffers glad_glDeleteFramebuffers -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; + typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); + GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; #define glGenFramebuffers glad_glGenFramebuffers -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); -GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; + typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); + GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; #define glCheckFramebufferStatus glad_glCheckFramebufferStatus -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; #define glFramebufferTexture1D glad_glFramebufferTexture1D -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; #define glFramebufferTexture2D glad_glFramebufferTexture2D -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; #define glFramebufferTexture3D glad_glFramebufferTexture3D -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; + typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; #define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); -GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); + GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; #define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv -typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); -GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; + typedef void(APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); + GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; #define glGenerateMipmap glad_glGenerateMipmap -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; #define glBlitFramebuffer glad_glBlitFramebuffer -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; #define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; #define glFramebufferTextureLayer glad_glFramebufferTextureLayer -typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; + typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; #define glMapBufferRange glad_glMapBufferRange -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); -GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; + typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); + GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; #define glFlushMappedBufferRange glad_glFlushMappedBufferRange -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); -GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; + typedef void(APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); + GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; #define glBindVertexArray glad_glBindVertexArray -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); -GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; + typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); + GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; #define glDeleteVertexArrays glad_glDeleteVertexArrays -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); -GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; + typedef void(APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); + GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; #define glGenVertexArrays glad_glGenVertexArrays -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); -GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; + typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); + GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; #define glIsVertexArray glad_glIsVertexArray #endif #ifndef GL_VERSION_3_1 #define GL_VERSION_3_1 1 -GLAPI int GLAD_GL_VERSION_3_1; -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; + GLAPI int GLAD_GL_VERSION_3_1; + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; #define glDrawArraysInstanced glad_glDrawArraysInstanced -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); -GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; #define glDrawElementsInstanced glad_glDrawElementsInstanced -typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); -GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; + typedef void(APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); + GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; #define glTexBuffer glad_glTexBuffer -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); -GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; + typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); + GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; #define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex -typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; + typedef void(APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; #define glCopyBufferSubData glad_glCopyBufferSubData -typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; + typedef void(APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices); + GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; #define glGetUniformIndices glad_glGetUniformIndices -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; #define glGetActiveUniformsiv glad_glGetActiveUniformsiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; #define glGetActiveUniformName glad_glGetActiveUniformName -typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); -GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; + typedef GLuint(APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); + GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; #define glGetUniformBlockIndex glad_glGetUniformBlockIndex -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; #define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; #define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName -typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; + typedef void(APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; #define glUniformBlockBinding glad_glUniformBlockBinding #endif #ifndef GL_VERSION_3_2 #define GL_VERSION_3_2 1 -GLAPI int GLAD_GL_VERSION_3_2; -typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; + GLAPI int GLAD_GL_VERSION_3_2; + typedef void(APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; #define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; #define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; #define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); -GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex); + GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; #define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); -GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; + typedef void(APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); + GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; #define glProvokingVertex glad_glProvokingVertex -typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); -GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; + typedef GLsync(APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); + GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; #define glFenceSync glad_glFenceSync -typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); -GLAPI PFNGLISSYNCPROC glad_glIsSync; + typedef GLboolean(APIENTRYP PFNGLISSYNCPROC)(GLsync sync); + GLAPI PFNGLISSYNCPROC glad_glIsSync; #define glIsSync glad_glIsSync -typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); -GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; + typedef void(APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); + GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; #define glDeleteSync glad_glDeleteSync -typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; + typedef GLenum(APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; #define glClientWaitSync glad_glClientWaitSync -typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; + typedef void(APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; #define glWaitSync glad_glWaitSync -typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); -GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; + typedef void(APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); + GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; #define glGetInteger64v glad_glGetInteger64v -typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); -GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; + typedef void(APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); + GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; #define glGetSynciv glad_glGetSynciv -typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); -GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; + typedef void(APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); + GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; #define glGetInteger64i_v glad_glGetInteger64i_v -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); -GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); + GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; #define glGetBufferParameteri64v glad_glGetBufferParameteri64v -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; #define glFramebufferTexture glad_glFramebufferTexture -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; + typedef void(APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; #define glTexImage2DMultisample glad_glTexImage2DMultisample -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; + typedef void(APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; #define glTexImage3DMultisample glad_glTexImage3DMultisample -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); -GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; + typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); + GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; #define glGetMultisamplefv glad_glGetMultisamplefv -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); -GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; + typedef void(APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); + GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; #define glSampleMaski glad_glSampleMaski #endif #ifndef GL_VERSION_3_3 #define GL_VERSION_3_3 1 -GLAPI int GLAD_GL_VERSION_3_3; -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; + GLAPI int GLAD_GL_VERSION_3_3; + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; #define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed -typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; + typedef GLint(APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); + GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; #define glGetFragDataIndex glad_glGetFragDataIndex -typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); -GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; + typedef void(APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); + GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; #define glGenSamplers glad_glGenSamplers -typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); -GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; + typedef void(APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); + GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; #define glDeleteSamplers glad_glDeleteSamplers -typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); -GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; + typedef GLboolean(APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); + GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; #define glIsSampler glad_glIsSampler -typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); -GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; + typedef void(APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); + GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; #define glBindSampler glad_glBindSampler -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); -GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); + GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; #define glSamplerParameteri glad_glSamplerParameteri -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); + GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; #define glSamplerParameteriv glad_glSamplerParameteriv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); -GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); + GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; #define glSamplerParameterf glad_glSamplerParameterf -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); -GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); + GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; #define glSamplerParameterfv glad_glSamplerParameterfv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); + GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; #define glSamplerParameterIiv glad_glSamplerParameterIiv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); -GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); + GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; #define glSamplerParameterIuiv glad_glSamplerParameterIuiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); + GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; #define glGetSamplerParameteriv glad_glGetSamplerParameteriv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); + GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; #define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); -GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); + GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; #define glGetSamplerParameterfv glad_glGetSamplerParameterfv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); + GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; #define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv -typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); -GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; + typedef void(APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); + GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; #define glQueryCounter glad_glQueryCounter -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); -GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; + typedef void(APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); + GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; #define glGetQueryObjecti64v glad_glGetQueryObjecti64v -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); -GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); + GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; #define glGetQueryObjectui64v glad_glGetQueryObjectui64v -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); -GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; + typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); + GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; #define glVertexAttribDivisor glad_glVertexAttribDivisor -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; #define glVertexAttribP1ui glad_glVertexAttribP1ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; #define glVertexAttribP1uiv glad_glVertexAttribP1uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; #define glVertexAttribP2ui glad_glVertexAttribP2ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; #define glVertexAttribP2uiv glad_glVertexAttribP2uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; #define glVertexAttribP3ui glad_glVertexAttribP3ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; #define glVertexAttribP3uiv glad_glVertexAttribP3uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; #define glVertexAttribP4ui glad_glVertexAttribP4ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; #define glVertexAttribP4uiv glad_glVertexAttribP4uiv -typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; + typedef void(APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); + GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; #define glVertexP2ui glad_glVertexP2ui -typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; + typedef void(APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); + GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; #define glVertexP2uiv glad_glVertexP2uiv -typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; + typedef void(APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); + GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; #define glVertexP3ui glad_glVertexP3ui -typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; + typedef void(APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); + GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; #define glVertexP3uiv glad_glVertexP3uiv -typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; + typedef void(APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); + GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; #define glVertexP4ui glad_glVertexP4ui -typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; + typedef void(APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); + GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; #define glVertexP4uiv glad_glVertexP4uiv -typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; + typedef void(APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); + GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; #define glTexCoordP1ui glad_glTexCoordP1ui -typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; + typedef void(APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); + GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; #define glTexCoordP1uiv glad_glTexCoordP1uiv -typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; + typedef void(APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); + GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; #define glTexCoordP2ui glad_glTexCoordP2ui -typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; + typedef void(APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); + GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; #define glTexCoordP2uiv glad_glTexCoordP2uiv -typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; + typedef void(APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); + GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; #define glTexCoordP3ui glad_glTexCoordP3ui -typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; + typedef void(APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); + GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; #define glTexCoordP3uiv glad_glTexCoordP3uiv -typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; + typedef void(APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); + GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; #define glTexCoordP4ui glad_glTexCoordP4ui -typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; + typedef void(APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); + GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; #define glTexCoordP4uiv glad_glTexCoordP4uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); + GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; #define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); + GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; #define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); + GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; #define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); + GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; #define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); + GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; #define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); + GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; #define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); + GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; #define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; + typedef void(APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); + GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; #define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv -typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; + typedef void(APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); + GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; #define glNormalP3ui glad_glNormalP3ui -typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; + typedef void(APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); + GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; #define glNormalP3uiv glad_glNormalP3uiv -typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; + typedef void(APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); + GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; #define glColorP3ui glad_glColorP3ui -typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; + typedef void(APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); + GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; #define glColorP3uiv glad_glColorP3uiv -typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; + typedef void(APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); + GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; #define glColorP4ui glad_glColorP4ui -typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; + typedef void(APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); + GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; #define glColorP4uiv glad_glColorP4uiv -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; + typedef void(APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); + GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; #define glSecondaryColorP3ui glad_glSecondaryColorP3ui -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; + typedef void(APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); + GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; #define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv #endif #ifndef GL_VERSION_4_0 #define GL_VERSION_4_0 1 -GLAPI int GLAD_GL_VERSION_4_0; -typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); -GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; + GLAPI int GLAD_GL_VERSION_4_0; + typedef void(APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); + GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; #define glMinSampleShading glad_glMinSampleShading -typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); -GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; + typedef void(APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); + GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; #define glBlendEquationi glad_glBlendEquationi -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); -GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; #define glBlendEquationSeparatei glad_glBlendEquationSeparatei -typedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); -GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; + typedef void(APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); + GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; #define glBlendFunci glad_glBlendFunci -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; #define glBlendFuncSeparatei glad_glBlendFuncSeparatei -typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); -GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; + typedef void(APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); + GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; #define glDrawArraysIndirect glad_glDrawArraysIndirect -typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); -GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; + typedef void(APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); + GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; #define glDrawElementsIndirect glad_glDrawElementsIndirect -typedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); -GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; + typedef void(APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); + GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; #define glUniform1d glad_glUniform1d -typedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); -GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; + typedef void(APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); + GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; #define glUniform2d glad_glUniform2d -typedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; + typedef void(APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); + GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; #define glUniform3d glad_glUniform3d -typedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; + typedef void(APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; #define glUniform4d glad_glUniform4d -typedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; + typedef void(APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; #define glUniform1dv glad_glUniform1dv -typedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; + typedef void(APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; #define glUniform2dv glad_glUniform2dv -typedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; + typedef void(APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; #define glUniform3dv glad_glUniform3dv -typedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; + typedef void(APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; #define glUniform4dv glad_glUniform4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; #define glUniformMatrix2dv glad_glUniformMatrix2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; #define glUniformMatrix3dv glad_glUniformMatrix3dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; #define glUniformMatrix4dv glad_glUniformMatrix4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; #define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; #define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; #define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; #define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; #define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; #define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv -typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); -GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; + typedef void(APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); + GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; #define glGetUniformdv glad_glGetUniformdv -typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); -GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; + typedef GLint(APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); + GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; #define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation -typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); -GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; + typedef GLuint(APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); + GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; #define glGetSubroutineIndex glad_glGetSubroutineIndex -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); -GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; #define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; #define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; #define glGetActiveSubroutineName glad_glGetActiveSubroutineName -typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); -GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; + typedef void(APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); + GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; #define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv -typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); -GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; + typedef void(APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); + GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; #define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv -typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); -GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; + typedef void(APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; #define glGetProgramStageiv glad_glGetProgramStageiv -typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); -GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; + typedef void(APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); + GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; #define glPatchParameteri glad_glPatchParameteri -typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); -GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; + typedef void(APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); + GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; #define glPatchParameterfv glad_glPatchParameterfv -typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); -GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; + typedef void(APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); + GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; #define glBindTransformFeedback glad_glBindTransformFeedback -typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); -GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; + typedef void(APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); + GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; #define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks -typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); -GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; + typedef void(APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); + GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; #define glGenTransformFeedbacks glad_glGenTransformFeedbacks -typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); -GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; + typedef GLboolean(APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); + GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; #define glIsTransformFeedback glad_glIsTransformFeedback -typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; + typedef void(APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); + GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; #define glPauseTransformFeedback glad_glPauseTransformFeedback -typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; + typedef void(APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); + GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; #define glResumeTransformFeedback glad_glResumeTransformFeedback -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); + GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; #define glDrawTransformFeedback glad_glDrawTransformFeedback -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); + GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; #define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream -typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); -GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; + typedef void(APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); + GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; #define glBeginQueryIndexed glad_glBeginQueryIndexed -typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); -GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; + typedef void(APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); + GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; #define glEndQueryIndexed glad_glEndQueryIndexed -typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; + typedef void(APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); + GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; #define glGetQueryIndexediv glad_glGetQueryIndexediv #endif #ifndef GL_VERSION_4_1 #define GL_VERSION_4_1 1 -GLAPI int GLAD_GL_VERSION_4_1; -typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); -GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; + GLAPI int GLAD_GL_VERSION_4_1; + typedef void(APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); + GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; #define glReleaseShaderCompiler glad_glReleaseShaderCompiler -typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); -GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; + typedef void(APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); + GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; #define glShaderBinary glad_glShaderBinary -typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; + typedef void(APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; #define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat -typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); -GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; + typedef void(APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); + GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; #define glDepthRangef glad_glDepthRangef -typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); -GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; + typedef void(APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); + GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; #define glClearDepthf glad_glClearDepthf -typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); -GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; + typedef void(APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); + GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; #define glGetProgramBinary glad_glGetProgramBinary -typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); -GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; + typedef void(APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); + GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; #define glProgramBinary glad_glProgramBinary -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); -GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); + GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; #define glProgramParameteri glad_glProgramParameteri -typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); -GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; + typedef void(APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); + GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; #define glUseProgramStages glad_glUseProgramStages -typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); -GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; + typedef void(APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); + GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; #define glActiveShaderProgram glad_glActiveShaderProgram -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const*strings); -GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const *strings); + GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; #define glCreateShaderProgramv glad_glCreateShaderProgramv -typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; + typedef void(APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); + GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; #define glBindProgramPipeline glad_glBindProgramPipeline -typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); -GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; + typedef void(APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); + GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; #define glDeleteProgramPipelines glad_glDeleteProgramPipelines -typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); -GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; + typedef void(APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); + GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; #define glGenProgramPipelines glad_glGenProgramPipelines -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; + typedef GLboolean(APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); + GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; #define glIsProgramPipeline glad_glIsProgramPipeline -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); + GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; #define glGetProgramPipelineiv glad_glGetProgramPipelineiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); -GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); + GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; #define glProgramUniform1i glad_glProgramUniform1i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; #define glProgramUniform1iv glad_glProgramUniform1iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); -GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); + GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; #define glProgramUniform1f glad_glProgramUniform1f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; #define glProgramUniform1fv glad_glProgramUniform1fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); -GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); + GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; #define glProgramUniform1d glad_glProgramUniform1d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; #define glProgramUniform1dv glad_glProgramUniform1dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); -GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); + GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; #define glProgramUniform1ui glad_glProgramUniform1ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; #define glProgramUniform1uiv glad_glProgramUniform1uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); -GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); + GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; #define glProgramUniform2i glad_glProgramUniform2i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; #define glProgramUniform2iv glad_glProgramUniform2iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); -GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; #define glProgramUniform2f glad_glProgramUniform2f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; #define glProgramUniform2fv glad_glProgramUniform2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); -GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); + GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; #define glProgramUniform2d glad_glProgramUniform2d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; #define glProgramUniform2dv glad_glProgramUniform2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); -GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); + GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; #define glProgramUniform2ui glad_glProgramUniform2ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; #define glProgramUniform2uiv glad_glProgramUniform2uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; #define glProgramUniform3i glad_glProgramUniform3i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; #define glProgramUniform3iv glad_glProgramUniform3iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; #define glProgramUniform3f glad_glProgramUniform3f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; #define glProgramUniform3fv glad_glProgramUniform3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; #define glProgramUniform3d glad_glProgramUniform3d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; #define glProgramUniform3dv glad_glProgramUniform3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; #define glProgramUniform3ui glad_glProgramUniform3ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; #define glProgramUniform3uiv glad_glProgramUniform3uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; #define glProgramUniform4i glad_glProgramUniform4i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); + GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; #define glProgramUniform4iv glad_glProgramUniform4iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; #define glProgramUniform4f glad_glProgramUniform4f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; #define glProgramUniform4fv glad_glProgramUniform4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; #define glProgramUniform4d glad_glProgramUniform4d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; #define glProgramUniform4dv glad_glProgramUniform4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; #define glProgramUniform4ui glad_glProgramUniform4ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); + GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; #define glProgramUniform4uiv glad_glProgramUniform4uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; #define glProgramUniformMatrix2fv glad_glProgramUniformMatrix2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; #define glProgramUniformMatrix3fv glad_glProgramUniformMatrix3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; #define glProgramUniformMatrix4fv glad_glProgramUniformMatrix4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; #define glProgramUniformMatrix2dv glad_glProgramUniformMatrix2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; #define glProgramUniformMatrix3dv glad_glProgramUniformMatrix3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; #define glProgramUniformMatrix4dv glad_glProgramUniformMatrix4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; #define glProgramUniformMatrix2x3fv glad_glProgramUniformMatrix2x3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; #define glProgramUniformMatrix3x2fv glad_glProgramUniformMatrix3x2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; #define glProgramUniformMatrix2x4fv glad_glProgramUniformMatrix2x4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; #define glProgramUniformMatrix4x2fv glad_glProgramUniformMatrix4x2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; #define glProgramUniformMatrix3x4fv glad_glProgramUniformMatrix3x4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; #define glProgramUniformMatrix4x3fv glad_glProgramUniformMatrix4x3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; #define glProgramUniformMatrix2x3dv glad_glProgramUniformMatrix2x3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; #define glProgramUniformMatrix3x2dv glad_glProgramUniformMatrix3x2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; #define glProgramUniformMatrix2x4dv glad_glProgramUniformMatrix2x4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; #define glProgramUniformMatrix4x2dv glad_glProgramUniformMatrix4x2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; #define glProgramUniformMatrix3x4dv glad_glProgramUniformMatrix3x4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; #define glProgramUniformMatrix4x3dv glad_glProgramUniformMatrix4x3dv -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); + GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; #define glValidateProgramPipeline glad_glValidateProgramPipeline -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; #define glGetProgramPipelineInfoLog glad_glGetProgramPipelineInfoLog -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); -GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); + GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; #define glVertexAttribL1d glad_glVertexAttribL1d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); -GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); + GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; #define glVertexAttribL2d glad_glVertexAttribL2d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; #define glVertexAttribL3d glad_glVertexAttribL3d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; #define glVertexAttribL4d glad_glVertexAttribL4d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; #define glVertexAttribL1dv glad_glVertexAttribL1dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; #define glVertexAttribL2dv glad_glVertexAttribL2dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; #define glVertexAttribL3dv glad_glVertexAttribL3dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); + GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; #define glVertexAttribL4dv glad_glVertexAttribL4dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; + typedef void(APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; #define glVertexAttribLPointer glad_glVertexAttribLPointer -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); -GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); + GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; #define glGetVertexAttribLdv glad_glGetVertexAttribLdv -typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); -GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; + typedef void(APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); + GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; #define glViewportArrayv glad_glViewportArrayv -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; #define glViewportIndexedf glad_glViewportIndexedf -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); + GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; #define glViewportIndexedfv glad_glViewportIndexedfv -typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); -GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; + typedef void(APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); + GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; #define glScissorArrayv glad_glScissorArrayv -typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; + typedef void(APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; #define glScissorIndexed glad_glScissorIndexed -typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; + typedef void(APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); + GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; #define glScissorIndexedv glad_glScissorIndexedv -typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); -GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; + typedef void(APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); + GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; #define glDepthRangeArrayv glad_glDepthRangeArrayv -typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); -GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; + typedef void(APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); + GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; #define glDepthRangeIndexed glad_glDepthRangeIndexed -typedef void (APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); -GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; + typedef void(APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); + GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; #define glGetFloati_v glad_glGetFloati_v -typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); -GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; + typedef void(APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); + GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; #define glGetDoublei_v glad_glGetDoublei_v #endif #ifndef GL_VERSION_4_2 #define GL_VERSION_4_2 1 -GLAPI int GLAD_GL_VERSION_4_2; -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -GLAPI PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; + GLAPI int GLAD_GL_VERSION_4_2; + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + GLAPI PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; #define glDrawArraysInstancedBaseInstance glad_glDrawArraysInstancedBaseInstance -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; #define glDrawElementsInstancedBaseInstance glad_glDrawElementsInstancedBaseInstance -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; #define glDrawElementsInstancedBaseVertexBaseInstance glad_glDrawElementsInstancedBaseVertexBaseInstance -typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); -GLAPI PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; + typedef void(APIENTRYP PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); + GLAPI PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; #define glGetInternalformativ glad_glGetInternalformativ -typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; + typedef void(APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + GLAPI PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; #define glGetActiveAtomicCounterBufferiv glad_glGetActiveAtomicCounterBufferiv -typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); -GLAPI PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; + typedef void(APIENTRYP PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + GLAPI PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; #define glBindImageTexture glad_glBindImageTexture -typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); -GLAPI PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; + typedef void(APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); + GLAPI PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; #define glMemoryBarrier glad_glMemoryBarrier -typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GLAPI PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; + typedef void(APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; #define glTexStorage1D glad_glTexStorage1D -typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; + typedef void(APIENTRYP PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; #define glTexStorage2D glad_glTexStorage2D -typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GLAPI PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; + typedef void(APIENTRYP PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + GLAPI PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; #define glTexStorage3D glad_glTexStorage3D -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); + GLAPI PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; #define glDrawTransformFeedbackInstanced glad_glDrawTransformFeedbackInstanced -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; #define glDrawTransformFeedbackStreamInstanced glad_glDrawTransformFeedbackStreamInstanced #endif #ifndef GL_VERSION_4_3 #define GL_VERSION_4_3 1 -GLAPI int GLAD_GL_VERSION_4_3; -typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; + GLAPI int GLAD_GL_VERSION_4_3; + typedef void(APIENTRYP PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; #define glClearBufferData glad_glClearBufferData -typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; + typedef void(APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; #define glClearBufferSubData glad_glClearBufferSubData -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -GLAPI PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + GLAPI PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; #define glDispatchCompute glad_glDispatchCompute -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); -GLAPI PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); + GLAPI PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; #define glDispatchComputeIndirect glad_glDispatchComputeIndirect -typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -GLAPI PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; + typedef void(APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); + GLAPI PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; #define glCopyImageSubData glad_glCopyImageSubData -typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -GLAPI PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; + typedef void(APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); + GLAPI PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; #define glFramebufferParameteri glad_glFramebufferParameteri -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); + GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; #define glGetFramebufferParameteriv glad_glGetFramebufferParameteriv -typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); -GLAPI PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; + typedef void(APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); + GLAPI PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; #define glGetInternalformati64v glad_glGetInternalformati64v -typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -GLAPI PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; + typedef void(APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + GLAPI PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; #define glInvalidateTexSubImage glad_glInvalidateTexSubImage -typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); -GLAPI PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; + typedef void(APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); + GLAPI PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; #define glInvalidateTexImage glad_glInvalidateTexImage -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); -GLAPI PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; #define glInvalidateBufferSubData glad_glInvalidateBufferSubData -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); -GLAPI PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); + GLAPI PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; #define glInvalidateBufferData glad_glInvalidateBufferData -typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments); -GLAPI PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; + typedef void(APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments); + GLAPI PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; #define glInvalidateFramebuffer glad_glInvalidateFramebuffer -typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; + typedef void(APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; #define glInvalidateSubFramebuffer glad_glInvalidateSubFramebuffer -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -GLAPI PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + GLAPI PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; #define glMultiDrawArraysIndirect glad_glMultiDrawArraysIndirect -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; #define glMultiDrawElementsIndirect glad_glMultiDrawElementsIndirect -typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; + typedef void(APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + GLAPI PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; #define glGetProgramInterfaceiv glad_glGetProgramInterfaceiv -typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); -GLAPI PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; + typedef GLuint(APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); + GLAPI PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; #define glGetProgramResourceIndex glad_glGetProgramResourceIndex -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLAPI PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; #define glGetProgramResourceName glad_glGetProgramResourceName -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); -GLAPI PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); + GLAPI PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; #define glGetProgramResourceiv glad_glGetProgramResourceiv -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar *name); -GLAPI PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; + typedef GLint(APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar *name); + GLAPI PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; #define glGetProgramResourceLocation glad_glGetProgramResourceLocation -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); -GLAPI PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; + typedef GLint(APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); + GLAPI PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; #define glGetProgramResourceLocationIndex glad_glGetProgramResourceLocationIndex -typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -GLAPI PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; + typedef void(APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLAPI PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; #define glShaderStorageBlockBinding glad_glShaderStorageBlockBinding -typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; + typedef void(APIENTRYP PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; #define glTexBufferRange glad_glTexBufferRange -typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; + typedef void(APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; #define glTexStorage2DMultisample glad_glTexStorage2DMultisample -typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; + typedef void(APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; #define glTexStorage3DMultisample glad_glTexStorage3DMultisample -typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -GLAPI PFNGLTEXTUREVIEWPROC glad_glTextureView; + typedef void(APIENTRYP PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + GLAPI PFNGLTEXTUREVIEWPROC glad_glTextureView; #define glTextureView glad_glTextureView -typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; + typedef void(APIENTRYP PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; #define glBindVertexBuffer glad_glBindVertexBuffer -typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; + typedef void(APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + GLAPI PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; #define glVertexAttribFormat glad_glVertexAttribFormat -typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; + typedef void(APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; #define glVertexAttribIFormat glad_glVertexAttribIFormat -typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; + typedef void(APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; #define glVertexAttribLFormat glad_glVertexAttribLFormat -typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); -GLAPI PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; + typedef void(APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); + GLAPI PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; #define glVertexAttribBinding glad_glVertexAttribBinding -typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); -GLAPI PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; + typedef void(APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); + GLAPI PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; #define glVertexBindingDivisor glad_glVertexBindingDivisor -typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GLAPI PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; + typedef void(APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); + GLAPI PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; #define glDebugMessageControl glad_glDebugMessageControl -typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GLAPI PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); + GLAPI PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; #define glDebugMessageInsert glad_glDebugMessageInsert -typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void *userParam); -GLAPI PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void *userParam); + GLAPI PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; #define glDebugMessageCallback glad_glDebugMessageCallback -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -GLAPI PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); + GLAPI PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; #define glGetDebugMessageLog glad_glGetDebugMessageLog -typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); -GLAPI PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; + typedef void(APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); + GLAPI PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; #define glPushDebugGroup glad_glPushDebugGroup -typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); -GLAPI PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; + typedef void(APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); + GLAPI PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; #define glPopDebugGroup glad_glPopDebugGroup -typedef void (APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -GLAPI PFNGLOBJECTLABELPROC glad_glObjectLabel; + typedef void(APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); + GLAPI PFNGLOBJECTLABELPROC glad_glObjectLabel; #define glObjectLabel glad_glObjectLabel -typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -GLAPI PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; + typedef void(APIENTRYP PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); + GLAPI PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; #define glGetObjectLabel glad_glGetObjectLabel -typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, const GLchar *label); -GLAPI PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; + typedef void(APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, const GLchar *label); + GLAPI PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; #define glObjectPtrLabel glad_glObjectPtrLabel -typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -GLAPI PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; + typedef void(APIENTRYP PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); + GLAPI PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; #define glGetObjectPtrLabel glad_glGetObjectPtrLabel -typedef void (APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params); -GLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv; + typedef void(APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params); + GLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv; #define glGetPointerv glad_glGetPointerv #endif #ifndef GL_VERSION_4_4 #define GL_VERSION_4_4 1 -GLAPI int GLAD_GL_VERSION_4_4; -typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); -GLAPI PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; + GLAPI int GLAD_GL_VERSION_4_4; + typedef void(APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); + GLAPI PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; #define glBufferStorage glad_glBufferStorage -typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; + typedef void(APIENTRYP PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; #define glClearTexImage glad_glClearTexImage -typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; + typedef void(APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; #define glClearTexSubImage glad_glClearTexSubImage -typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); -GLAPI PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; + typedef void(APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); + GLAPI PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; #define glBindBuffersBase glad_glBindBuffersBase -typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); -GLAPI PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; + typedef void(APIENTRYP PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); + GLAPI PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; #define glBindBuffersRange glad_glBindBuffersRange -typedef void (APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); -GLAPI PFNGLBINDTEXTURESPROC glad_glBindTextures; + typedef void(APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); + GLAPI PFNGLBINDTEXTURESPROC glad_glBindTextures; #define glBindTextures glad_glBindTextures -typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint *samplers); -GLAPI PFNGLBINDSAMPLERSPROC glad_glBindSamplers; + typedef void(APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint *samplers); + GLAPI PFNGLBINDSAMPLERSPROC glad_glBindSamplers; #define glBindSamplers glad_glBindSamplers -typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); -GLAPI PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; + typedef void(APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); + GLAPI PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; #define glBindImageTextures glad_glBindImageTextures -typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); -GLAPI PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; + typedef void(APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + GLAPI PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; #define glBindVertexBuffers glad_glBindVertexBuffers #endif #ifndef GL_VERSION_4_5 #define GL_VERSION_4_5 1 -GLAPI int GLAD_GL_VERSION_4_5; -typedef void (APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); -GLAPI PFNGLCLIPCONTROLPROC glad_glClipControl; + GLAPI int GLAD_GL_VERSION_4_5; + typedef void(APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); + GLAPI PFNGLCLIPCONTROLPROC glad_glClipControl; #define glClipControl glad_glClipControl -typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); -GLAPI PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; + typedef void(APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); + GLAPI PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; #define glCreateTransformFeedbacks glad_glCreateTransformFeedbacks -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); -GLAPI PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); + GLAPI PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; #define glTransformFeedbackBufferBase glad_glTransformFeedbackBufferBase -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; #define glTransformFeedbackBufferRange glad_glTransformFeedbackBufferRange -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); -GLAPI PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); + GLAPI PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; #define glGetTransformFeedbackiv glad_glGetTransformFeedbackiv -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint *param); -GLAPI PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint *param); + GLAPI PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; #define glGetTransformFeedbacki_v glad_glGetTransformFeedbacki_v -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); -GLAPI PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); + GLAPI PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; #define glGetTransformFeedbacki64_v glad_glGetTransformFeedbacki64_v -typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); -GLAPI PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; + typedef void(APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); + GLAPI PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; #define glCreateBuffers glad_glCreateBuffers -typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); -GLAPI PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; + typedef void(APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); + GLAPI PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; #define glNamedBufferStorage glad_glNamedBufferStorage -typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); -GLAPI PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; + typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); + GLAPI PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; #define glNamedBufferData glad_glNamedBufferData -typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); -GLAPI PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; + typedef void(APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); + GLAPI PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; #define glNamedBufferSubData glad_glNamedBufferSubData -typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; + typedef void(APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + GLAPI PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; #define glCopyNamedBufferSubData glad_glCopyNamedBufferSubData -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; #define glClearNamedBufferData glad_glClearNamedBufferData -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; #define glClearNamedBufferSubData glad_glClearNamedBufferSubData -typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); -GLAPI PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; + typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); + GLAPI PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; #define glMapNamedBuffer glad_glMapNamedBuffer -typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -GLAPI PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; + typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; #define glMapNamedBufferRange glad_glMapNamedBufferRange -typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); -GLAPI PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; + typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); + GLAPI PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; #define glUnmapNamedBuffer glad_glUnmapNamedBuffer -typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); -GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; + typedef void(APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; #define glFlushMappedNamedBufferRange glad_glFlushMappedNamedBufferRange -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint *params); -GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint *params); + GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; #define glGetNamedBufferParameteriv glad_glGetNamedBufferParameteriv -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64 *params); -GLAPI PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64 *params); + GLAPI PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; #define glGetNamedBufferParameteri64v glad_glGetNamedBufferParameteri64v -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void **params); -GLAPI PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void **params); + GLAPI PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; #define glGetNamedBufferPointerv glad_glGetNamedBufferPointerv -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); -GLAPI PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); + GLAPI PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; #define glGetNamedBufferSubData glad_glGetNamedBufferSubData -typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -GLAPI PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; + typedef void(APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); + GLAPI PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; #define glCreateFramebuffers glad_glCreateFramebuffers -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; #define glNamedFramebufferRenderbuffer glad_glNamedFramebufferRenderbuffer -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); -GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); + GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; #define glNamedFramebufferParameteri glad_glNamedFramebufferParameteri -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; #define glNamedFramebufferTexture glad_glNamedFramebufferTexture -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; #define glNamedFramebufferTextureLayer glad_glNamedFramebufferTextureLayer -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); -GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); + GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; #define glNamedFramebufferDrawBuffer glad_glNamedFramebufferDrawBuffer -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); -GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); + GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; #define glNamedFramebufferDrawBuffers glad_glNamedFramebufferDrawBuffers -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); -GLAPI PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); + GLAPI PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; #define glNamedFramebufferReadBuffer glad_glNamedFramebufferReadBuffer -typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); -GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); + GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; #define glInvalidateNamedFramebufferData glad_glInvalidateNamedFramebufferData -typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; #define glInvalidateNamedFramebufferSubData glad_glInvalidateNamedFramebufferSubData -typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); -GLAPI PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); + GLAPI PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; #define glClearNamedFramebufferiv glad_glClearNamedFramebufferiv -typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); -GLAPI PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); + GLAPI PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; #define glClearNamedFramebufferuiv glad_glClearNamedFramebufferuiv -typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); -GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); + GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; #define glClearNamedFramebufferfv glad_glClearNamedFramebufferfv -typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; #define glClearNamedFramebufferfi glad_glClearNamedFramebufferfi -typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GLAPI PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; + typedef void(APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + GLAPI PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; #define glBlitNamedFramebuffer glad_glBlitNamedFramebuffer -typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); -GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; + typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); + GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; #define glCheckNamedFramebufferStatus glad_glCheckNamedFramebufferStatus -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint *param); -GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint *param); + GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; #define glGetNamedFramebufferParameteriv glad_glGetNamedFramebufferParameteriv -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); -GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); + GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; #define glGetNamedFramebufferAttachmentParameteriv glad_glGetNamedFramebufferAttachmentParameteriv -typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -GLAPI PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; + typedef void(APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); + GLAPI PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; #define glCreateRenderbuffers glad_glCreateRenderbuffers -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; #define glNamedRenderbufferStorage glad_glNamedRenderbufferStorage -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; #define glNamedRenderbufferStorageMultisample glad_glNamedRenderbufferStorageMultisample -typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint *params); -GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; + typedef void(APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint *params); + GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; #define glGetNamedRenderbufferParameteriv glad_glGetNamedRenderbufferParameteriv -typedef void (APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); -GLAPI PFNGLCREATETEXTURESPROC glad_glCreateTextures; + typedef void(APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); + GLAPI PFNGLCREATETEXTURESPROC glad_glCreateTextures; #define glCreateTextures glad_glCreateTextures -typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); -GLAPI PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; + typedef void(APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); + GLAPI PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; #define glTextureBuffer glad_glTextureBuffer -typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; + typedef void(APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; #define glTextureBufferRange glad_glTextureBufferRange -typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); -GLAPI PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; + typedef void(APIENTRYP PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; #define glTextureStorage1D glad_glTextureStorage1D -typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; #define glTextureStorage2D glad_glTextureStorage2D -typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GLAPI PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + GLAPI PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; #define glTextureStorage3D glad_glTextureStorage3D -typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; #define glTextureStorage2DMultisample glad_glTextureStorage2DMultisample -typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; #define glTextureStorage3DMultisample glad_glTextureStorage3DMultisample -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; #define glTextureSubImage1D glad_glTextureSubImage1D -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; #define glTextureSubImage2D glad_glTextureSubImage2D -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + GLAPI PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; #define glTextureSubImage3D glad_glTextureSubImage3D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; #define glCompressedTextureSubImage1D glad_glCompressedTextureSubImage1D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; #define glCompressedTextureSubImage2D glad_glCompressedTextureSubImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; #define glCompressedTextureSubImage3D glad_glCompressedTextureSubImage3D -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; #define glCopyTextureSubImage1D glad_glCopyTextureSubImage1D -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; #define glCopyTextureSubImage2D glad_glCopyTextureSubImage2D -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; #define glCopyTextureSubImage3D glad_glCopyTextureSubImage3D -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); -GLAPI PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); + GLAPI PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; #define glTextureParameterf glad_glTextureParameterf -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat *param); -GLAPI PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat *param); + GLAPI PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; #define glTextureParameterfv glad_glTextureParameterfv -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); -GLAPI PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); + GLAPI PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; #define glTextureParameteri glad_glTextureParameteri -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint *params); -GLAPI PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint *params); + GLAPI PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; #define glTextureParameterIiv glad_glTextureParameterIiv -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint *params); -GLAPI PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint *params); + GLAPI PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; #define glTextureParameterIuiv glad_glTextureParameterIuiv -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint *param); -GLAPI PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint *param); + GLAPI PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; #define glTextureParameteriv glad_glTextureParameteriv -typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); -GLAPI PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; + typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); + GLAPI PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; #define glGenerateTextureMipmap glad_glGenerateTextureMipmap -typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); -GLAPI PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; + typedef void(APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); + GLAPI PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; #define glBindTextureUnit glad_glBindTextureUnit -typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; + typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; #define glGetTextureImage glad_glGetTextureImage -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; #define glGetCompressedTextureImage glad_glGetCompressedTextureImage -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat *params); + GLAPI PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; #define glGetTextureLevelParameterfv glad_glGetTextureLevelParameterfv -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; #define glGetTextureLevelParameteriv glad_glGetTextureLevelParameteriv -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat *params); + GLAPI PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; #define glGetTextureParameterfv glad_glGetTextureParameterfv -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; #define glGetTextureParameterIiv glad_glGetTextureParameterIiv -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint *params); -GLAPI PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint *params); + GLAPI PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; #define glGetTextureParameterIuiv glad_glGetTextureParameterIuiv -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint *params); + GLAPI PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; #define glGetTextureParameteriv glad_glGetTextureParameteriv -typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); -GLAPI PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; + typedef void(APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); + GLAPI PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; #define glCreateVertexArrays glad_glCreateVertexArrays -typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); -GLAPI PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + GLAPI PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; #define glDisableVertexArrayAttrib glad_glDisableVertexArrayAttrib -typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); -GLAPI PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + GLAPI PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; #define glEnableVertexArrayAttrib glad_glEnableVertexArrayAttrib -typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); -GLAPI PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; + typedef void(APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); + GLAPI PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; #define glVertexArrayElementBuffer glad_glVertexArrayElementBuffer -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; #define glVertexArrayVertexBuffer glad_glVertexArrayVertexBuffer -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); -GLAPI PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + GLAPI PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; #define glVertexArrayVertexBuffers glad_glVertexArrayVertexBuffers -typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); -GLAPI PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + GLAPI PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; #define glVertexArrayAttribBinding glad_glVertexArrayAttribBinding -typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + GLAPI PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; #define glVertexArrayAttribFormat glad_glVertexArrayAttribFormat -typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; #define glVertexArrayAttribIFormat glad_glVertexArrayAttribIFormat -typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; #define glVertexArrayAttribLFormat glad_glVertexArrayAttribLFormat -typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); -GLAPI PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; + typedef void(APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + GLAPI PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; #define glVertexArrayBindingDivisor glad_glVertexArrayBindingDivisor -typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); -GLAPI PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; + typedef void(APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); + GLAPI PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; #define glGetVertexArrayiv glad_glGetVertexArrayiv -typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); -GLAPI PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); + GLAPI PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; #define glGetVertexArrayIndexediv glad_glGetVertexArrayIndexediv -typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); -GLAPI PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); + GLAPI PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; #define glGetVertexArrayIndexed64iv glad_glGetVertexArrayIndexed64iv -typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); -GLAPI PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; + typedef void(APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); + GLAPI PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; #define glCreateSamplers glad_glCreateSamplers -typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); -GLAPI PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; + typedef void(APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); + GLAPI PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; #define glCreateProgramPipelines glad_glCreateProgramPipelines -typedef void (APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); -GLAPI PFNGLCREATEQUERIESPROC glad_glCreateQueries; + typedef void(APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); + GLAPI PFNGLCREATEQUERIESPROC glad_glCreateQueries; #define glCreateQueries glad_glCreateQueries -typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -GLAPI PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; #define glGetQueryBufferObjecti64v glad_glGetQueryBufferObjecti64v -typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -GLAPI PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; #define glGetQueryBufferObjectiv glad_glGetQueryBufferObjectiv -typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -GLAPI PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; #define glGetQueryBufferObjectui64v glad_glGetQueryBufferObjectui64v -typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -GLAPI PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; #define glGetQueryBufferObjectuiv glad_glGetQueryBufferObjectuiv -typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); -GLAPI PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; + typedef void(APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); + GLAPI PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; #define glMemoryBarrierByRegion glad_glMemoryBarrierByRegion -typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; + typedef void(APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; #define glGetTextureSubImage glad_glGetTextureSubImage -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; #define glGetCompressedTextureSubImage glad_glGetCompressedTextureSubImage -typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); -GLAPI PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; + typedef GLenum(APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); + GLAPI PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; #define glGetGraphicsResetStatus glad_glGetGraphicsResetStatus -typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETNCOMPRESSEDTEXIMAGEPROC glad_glGetnCompressedTexImage; + typedef void(APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETNCOMPRESSEDTEXIMAGEPROC glad_glGetnCompressedTexImage; #define glGetnCompressedTexImage glad_glGetnCompressedTexImage -typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); -GLAPI PFNGLGETNTEXIMAGEPROC glad_glGetnTexImage; + typedef void(APIENTRYP PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + GLAPI PFNGLGETNTEXIMAGEPROC glad_glGetnTexImage; #define glGetnTexImage glad_glGetnTexImage -typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); -GLAPI PFNGLGETNUNIFORMDVPROC glad_glGetnUniformdv; + typedef void(APIENTRYP PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); + GLAPI PFNGLGETNUNIFORMDVPROC glad_glGetnUniformdv; #define glGetnUniformdv glad_glGetnUniformdv -typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -GLAPI PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; + typedef void(APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); + GLAPI PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; #define glGetnUniformfv glad_glGetnUniformfv -typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); -GLAPI PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; + typedef void(APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); + GLAPI PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; #define glGetnUniformiv glad_glGetnUniformiv -typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); -GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; + typedef void(APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); + GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; #define glGetnUniformuiv glad_glGetnUniformuiv -typedef void (APIENTRYP PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); -GLAPI PFNGLREADNPIXELSPROC glad_glReadnPixels; + typedef void(APIENTRYP PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + GLAPI PFNGLREADNPIXELSPROC glad_glReadnPixels; #define glReadnPixels glad_glReadnPixels -typedef void (APIENTRYP PFNGLGETNMAPDVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); -GLAPI PFNGLGETNMAPDVPROC glad_glGetnMapdv; + typedef void(APIENTRYP PFNGLGETNMAPDVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); + GLAPI PFNGLGETNMAPDVPROC glad_glGetnMapdv; #define glGetnMapdv glad_glGetnMapdv -typedef void (APIENTRYP PFNGLGETNMAPFVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); -GLAPI PFNGLGETNMAPFVPROC glad_glGetnMapfv; + typedef void(APIENTRYP PFNGLGETNMAPFVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); + GLAPI PFNGLGETNMAPFVPROC glad_glGetnMapfv; #define glGetnMapfv glad_glGetnMapfv -typedef void (APIENTRYP PFNGLGETNMAPIVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); -GLAPI PFNGLGETNMAPIVPROC glad_glGetnMapiv; + typedef void(APIENTRYP PFNGLGETNMAPIVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); + GLAPI PFNGLGETNMAPIVPROC glad_glGetnMapiv; #define glGetnMapiv glad_glGetnMapiv -typedef void (APIENTRYP PFNGLGETNPIXELMAPFVPROC)(GLenum map, GLsizei bufSize, GLfloat *values); -GLAPI PFNGLGETNPIXELMAPFVPROC glad_glGetnPixelMapfv; + typedef void(APIENTRYP PFNGLGETNPIXELMAPFVPROC)(GLenum map, GLsizei bufSize, GLfloat *values); + GLAPI PFNGLGETNPIXELMAPFVPROC glad_glGetnPixelMapfv; #define glGetnPixelMapfv glad_glGetnPixelMapfv -typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVPROC)(GLenum map, GLsizei bufSize, GLuint *values); -GLAPI PFNGLGETNPIXELMAPUIVPROC glad_glGetnPixelMapuiv; + typedef void(APIENTRYP PFNGLGETNPIXELMAPUIVPROC)(GLenum map, GLsizei bufSize, GLuint *values); + GLAPI PFNGLGETNPIXELMAPUIVPROC glad_glGetnPixelMapuiv; #define glGetnPixelMapuiv glad_glGetnPixelMapuiv -typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVPROC)(GLenum map, GLsizei bufSize, GLushort *values); -GLAPI PFNGLGETNPIXELMAPUSVPROC glad_glGetnPixelMapusv; + typedef void(APIENTRYP PFNGLGETNPIXELMAPUSVPROC)(GLenum map, GLsizei bufSize, GLushort *values); + GLAPI PFNGLGETNPIXELMAPUSVPROC glad_glGetnPixelMapusv; #define glGetnPixelMapusv glad_glGetnPixelMapusv -typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC)(GLsizei bufSize, GLubyte *pattern); -GLAPI PFNGLGETNPOLYGONSTIPPLEPROC glad_glGetnPolygonStipple; + typedef void(APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC)(GLsizei bufSize, GLubyte *pattern); + GLAPI PFNGLGETNPOLYGONSTIPPLEPROC glad_glGetnPolygonStipple; #define glGetnPolygonStipple glad_glGetnPolygonStipple -typedef void (APIENTRYP PFNGLGETNCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); -GLAPI PFNGLGETNCOLORTABLEPROC glad_glGetnColorTable; + typedef void(APIENTRYP PFNGLGETNCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); + GLAPI PFNGLGETNCOLORTABLEPROC glad_glGetnColorTable; #define glGetnColorTable glad_glGetnColorTable -typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); -GLAPI PFNGLGETNCONVOLUTIONFILTERPROC glad_glGetnConvolutionFilter; + typedef void(APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); + GLAPI PFNGLGETNCONVOLUTIONFILTERPROC glad_glGetnConvolutionFilter; #define glGetnConvolutionFilter glad_glGetnConvolutionFilter -typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); -GLAPI PFNGLGETNSEPARABLEFILTERPROC glad_glGetnSeparableFilter; + typedef void(APIENTRYP PFNGLGETNSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); + GLAPI PFNGLGETNSEPARABLEFILTERPROC glad_glGetnSeparableFilter; #define glGetnSeparableFilter glad_glGetnSeparableFilter -typedef void (APIENTRYP PFNGLGETNHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); -GLAPI PFNGLGETNHISTOGRAMPROC glad_glGetnHistogram; + typedef void(APIENTRYP PFNGLGETNHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); + GLAPI PFNGLGETNHISTOGRAMPROC glad_glGetnHistogram; #define glGetnHistogram glad_glGetnHistogram -typedef void (APIENTRYP PFNGLGETNMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); -GLAPI PFNGLGETNMINMAXPROC glad_glGetnMinmax; + typedef void(APIENTRYP PFNGLGETNMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); + GLAPI PFNGLGETNMINMAXPROC glad_glGetnMinmax; #define glGetnMinmax glad_glGetnMinmax -typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); -GLAPI PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; + typedef void(APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); + GLAPI PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; #define glTextureBarrier glad_glTextureBarrier #endif #ifndef GL_VERSION_4_6 #define GL_VERSION_4_6 1 -GLAPI int GLAD_GL_VERSION_4_6; -typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); -GLAPI PFNGLSPECIALIZESHADERPROC glad_glSpecializeShader; + GLAPI int GLAD_GL_VERSION_4_6; + typedef void(APIENTRYP PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); + GLAPI PFNGLSPECIALIZESHADERPROC glad_glSpecializeShader; #define glSpecializeShader glad_glSpecializeShader -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC glad_glMultiDrawArraysIndirectCount; + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + GLAPI PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC glad_glMultiDrawArraysIndirectCount; #define glMultiDrawArraysIndirectCount glad_glMultiDrawArraysIndirectCount -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glad_glMultiDrawElementsIndirectCount; + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glad_glMultiDrawElementsIndirectCount; #define glMultiDrawElementsIndirectCount glad_glMultiDrawElementsIndirectCount -typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); -GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp; + typedef void(APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); + GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp; #define glPolygonOffsetClamp glad_glPolygonOffsetClamp #endif diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/package.xml b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/package.xml index 554c7da05..e2d49d031 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/package.xml +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/package.xml @@ -30,4 +30,4 @@ ament_cmake - + \ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/angle.py b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/angle.py index 31e93b200..af25208e8 100755 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/angle.py +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/angle.py @@ -2,25 +2,25 @@ import numpy as np import matplotlib.pyplot as plt -c = np.array([5., 1.]) +c = np.array([5.0, 1.0]) ps = [] -r = 3. +r = 3.0 -for a in np.arange(-np.pi/2., np.pi/2.+.01, np.pi/8.): - p = np.array([c[0] + r*np.cos(a), c[1] + r*np.sin(a)]) +for a in np.arange(-np.pi / 2.0, np.pi / 2.0 + 0.01, np.pi / 8.0): + p = np.array([c[0] + r * np.cos(a), c[1] + r * np.sin(a)]) ps.append(p) - angle = (np.arctan((p[1] - c[1])/(p[0] - c[0])) + np.pi/2.)/np.pi * 1000. - new_angle = angle / 1000. * np.pi - np.pi/2. - #point = np.array([c[0] + r*np.cos(new_angle), c[1] + r*np.sin(new_angle)]) - center = np.array([p[0] - r*np.cos(new_angle), p[1] - r*np.sin(new_angle)]) - + angle = (np.arctan((p[1] - c[1]) / (p[0] - c[0])) + np.pi / 2.0) / np.pi * 1000.0 + new_angle = angle / 1000.0 * np.pi - np.pi / 2.0 + # point = np.array([c[0] + r*np.cos(new_angle), c[1] + r*np.sin(new_angle)]) + center = np.array([p[0] - r * np.cos(new_angle), p[1] - r * np.sin(new_angle)]) + print(a, angle, new_angle, c, center) ps = np.array(ps) -plt.axis('equal') -plt.plot(c[0], c[1], 'o') -plt.plot(ps[:, 0], ps[:, 1], 'o') +plt.axis("equal") +plt.plot(c[0], c[1], "o") +plt.plot(ps[:, 0], ps[:, 1], "o") plt.show() diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/scale_camera_info.py b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/scale_camera_info.py index b446d2ad9..5e07ded63 100755 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/scale_camera_info.py +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/scale_camera_info.py @@ -4,18 +4,25 @@ from sensor_msgs.msg import CameraInfo import copy + class CameraInfoScaler(Node): def __init__(self): - super().__init__('camera_info_scaler') + super().__init__("camera_info_scaler") # Parameters - self.declare_parameter('input_topic', '/camera_info') - self.declare_parameter('output_topic', '/camera_info_scaled') - self.declare_parameter('scale_factor', 1.0) + self.declare_parameter("input_topic", "/camera_info") + self.declare_parameter("output_topic", "/camera_info_scaled") + self.declare_parameter("scale_factor", 1.0) - input_topic = self.get_parameter('input_topic').get_parameter_value().string_value - output_topic = self.get_parameter('output_topic').get_parameter_value().string_value - self.scale_factor = self.get_parameter('scale_factor').get_parameter_value().double_value + input_topic = ( + self.get_parameter("input_topic").get_parameter_value().string_value + ) + output_topic = ( + self.get_parameter("output_topic").get_parameter_value().string_value + ) + self.scale_factor = ( + self.get_parameter("scale_factor").get_parameter_value().double_value + ) # Publisher and Subscriber self.pub_ = self.create_publisher(CameraInfo, output_topic, 10) @@ -26,12 +33,12 @@ def __init__(self): ) def callback(self, msg: CameraInfo): - scaled = copy.deepcopy(msg)#CameraInfo() - #scaled.header = msg.header - #scaled.height = msg.height - #scaled.width = msg.width - #scaled.distortion_model = msg.distortion_model - #scaled.d = list(msg.d) + scaled = copy.deepcopy(msg) # CameraInfo() + # scaled.header = msg.header + # scaled.height = msg.height + # scaled.width = msg.width + # scaled.distortion_model = msg.distortion_model + # scaled.d = list(msg.d) # Copy and modify intrinsic matrices scaled.k = list(msg.k) @@ -54,5 +61,5 @@ def main(args=None): rclpy.shutdown() -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere.py b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere.py index 905eab6ba..ac4afee1c 100755 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere.py +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere.py @@ -2,6 +2,7 @@ import numpy as np import matplotlib.pyplot as plt + def set_axes_equal(ax): """Set 3D plot axes to equal scale so spheres look like spheres.""" x_limits = ax.get_xlim3d() @@ -22,15 +23,16 @@ def set_axes_equal(ax): ax.set_ylim3d([mid_y - max_range, mid_y + max_range]) ax.set_zlim3d([mid_z - max_range, mid_z + max_range]) + # Image size width = 480 height = 270 # Camera parameters -cx = width/2 # principal point x -cy = height/2 # principal point y -fx = 233 # focal length x -fy = 233 # focal length y +cx = width / 2 # principal point x +cy = height / 2 # principal point y +fx = 233 # focal length x +fy = 233 # focal length y baseline = 0.12 # stereo baseline in meters @@ -41,7 +43,7 @@ def set_axes_equal(ax): # Simulate disparity values (for example, closer in the center) # You can replace this with a real disparity map or depth formula. -#disparity = 30 + 10 * np.exp(-((u - cx)**2 + (v - cy)**2) / (2 * (100**2))) +# disparity = 30 + 10 * np.exp(-((u - cx)**2 + (v - cy)**2) / (2 * (100**2))) c_u = cx c_v = cy @@ -52,25 +54,25 @@ def set_axes_equal(ax): b_0 = (c_v - cy) / fy b = (v - cy) / fy -Zc = fx*baseline/2. -Xc = a_0*Zc -Yc = b_0*Zc -expansion_radius = 2. +Zc = fx * baseline / 2.0 +Xc = a_0 * Zc +Yc = b_0 * Zc +expansion_radius = 2.0 -A = a*a + b*b + 1. -B = -2.*Zc*(a*a_0 + b*b_0 + 1.) -C = Zc*Zc*(a_0*a_0 + b_0*b_0 + 1.) - expansion_radius*expansion_radius +A = a * a + b * b + 1.0 +B = -2.0 * Zc * (a * a_0 + b * b_0 + 1.0) +C = Zc * Zc * (a_0 * a_0 + b_0 * b_0 + 1.0) - expansion_radius * expansion_radius -disc = B*B - 4.*A*C -#mask = np.where(disc > 0.) -mask = np.where(np.logical_and(disc > 0., v == cy)) +disc = B * B - 4.0 * A * C +# mask = np.where(disc > 0.) +mask = np.where(np.logical_and(disc > 0.0, v == cy)) A = A[mask] B = B[mask] u = u[mask] v = v[mask] disc = disc[mask] -Zp = (-B - np.sqrt(disc))/(2.*A) -disparity = fx*baseline/Zp +Zp = (-B - np.sqrt(disc)) / (2.0 * A) +disparity = fx * baseline / Zp xs = [] ys = [] @@ -83,70 +85,73 @@ def set_axes_equal(ax): a = (ut - cx) / fx b_0 = (c_v - cy) / fy b = (v_cur - cy) / fy - A = a*a + b*b + 1. - B = -2.*Zc*(a*a_0 + b*b_0 + 1.) - C = Zc*Zc*(a_0*a_0 + b_0*b_0 + 1.) - expansion_radius*expansion_radius - disc = B*B - 4.*A*C - Zp = (-B - np.sqrt(disc))/(2.*A) - disp = fx*baseline/Zp - if disc <= 0.: + A = a * a + b * b + 1.0 + B = -2.0 * Zc * (a * a_0 + b * b_0 + 1.0) + C = Zc * Zc * (a_0 * a_0 + b_0 * b_0 + 1.0) - expansion_radius * expansion_radius + disc = B * B - 4.0 * A * C + Zp = (-B - np.sqrt(disc)) / (2.0 * A) + disp = fx * baseline / Zp + if disc <= 0.0: continue - print('A B C', A, B, C, 'a a_0', a, a_0, 'b b_0', b, b_0) - print('Zp disp', Zp, disp) + print("A B C", A, B, C, "a a_0", a, a_0, "b b_0", b, b_0) + print("Zp disp", Zp, disp) - z = fx*baseline/disp - x = (ut - cx)*z/fx - y = (v_cur - cy)*z/fy + z = fx * baseline / disp + x = (ut - cx) * z / fx + y = (v_cur - cy) * z / fy xs.append(x) ys.append(y) zs.append(z) - Xp = a*Zp - angle = np.arctan((Xp - Xc)/(Zp - Zc)) - - depth = fx*baseline/disp - Zc_cur = depth + expansion_radius*np.cos(angle) - Xc_cur = (ut - cx)*depth/fx + expansion_radius*np.sin(angle) + Xp = a * Zp + angle = np.arctan((Xp - Xc) / (Zp - Zc)) + + depth = fx * baseline / disp + Zc_cur = depth + expansion_radius * np.cos(angle) + Xc_cur = (ut - cx) * depth / fx + expansion_radius * np.sin(angle) print(Zc, Zc_cur, Xc, Xc_cur) - a_0 = Xc_cur/Zc_cur - uc = fx*a_0 + cx - vc = fy*b_0 + cy - - ru = fx*expansion_radius/Zc_cur - rv = fy*expansion_radius/Zc_cur + a_0 = Xc_cur / Zc_cur + uc = fx * a_0 + cx + vc = fy * b_0 + cy - vmin = vc - rv*np.sqrt(1. - ((ut - uc)**2/(ru*ru))) - vmax = vc + rv*np.sqrt(1. - ((ut - uc)**2/(ru*ru))) + ru = fx * expansion_radius / Zc_cur + rv = fy * expansion_radius / Zc_cur + + vmin = vc - rv * np.sqrt(1.0 - ((ut - uc) ** 2 / (ru * ru))) + vmax = vc + rv * np.sqrt(1.0 - ((ut - uc) ** 2 / (ru * ru))) print(vmin, vmax) - if(vmin != vmin or vmax != vmax): + if vmin != vmin or vmax != vmax: continue for vt in range(int(np.floor(vmin)), int(np.ceil(vmax))): - #for vt in range(0, height): - #a_0 = (c_u - cx) / fx + # for vt in range(0, height): + # a_0 = (c_u - cx) / fx a = (ut - cx) / fx b_0 = (c_v - cy) / fy b = (vt - cy) / fy - A = a*a + b*b + 1. - B = -2.*Zc_cur*(a*a_0 + b*b_0 + 1.) - C = Zc_cur*Zc_cur*(a_0*a_0 + b_0*b_0 + 1.) - expansion_radius*expansion_radius - Zp = (-B - np.sqrt(B*B - 4.*A*C ))/(2.*A) - print('disc', B*B - 4.*A*C, np.sqrt(B*B - 4.*A*C)) - if (B*B - 4.*A*C) < 0.: + A = a * a + b * b + 1.0 + B = -2.0 * Zc_cur * (a * a_0 + b * b_0 + 1.0) + C = ( + Zc_cur * Zc_cur * (a_0 * a_0 + b_0 * b_0 + 1.0) + - expansion_radius * expansion_radius + ) + Zp = (-B - np.sqrt(B * B - 4.0 * A * C)) / (2.0 * A) + print("disc", B * B - 4.0 * A * C, np.sqrt(B * B - 4.0 * A * C)) + if (B * B - 4.0 * A * C) < 0.0: nan_disc_count += 1 - disp = fx*baseline/Zp + disp = fx * baseline / Zp - z = fx*baseline/disp - x = (ut - cx)*z/fx - y = (vt - cy)*z/fy - #if Zc_cur == Zc_cur: + z = fx * baseline / disp + x = (ut - cx) * z / fx + y = (vt - cy) * z / fy + # if Zc_cur == Zc_cur: # print(a_0, a, b_0, b, A, B, C, Zp, disp, B*B - 4.*A*C ) xs.append(x) ys.append(y) zs.append(z) -print('nan', nan_disc_count) - +print("nan", nan_disc_count) + # Compute depth from disparity (Z = fx * baseline / disparity) Z = fx * baseline / disparity @@ -159,22 +164,22 @@ def set_axes_equal(ax): X = X.flatten() Y = Y.flatten() Z = Z.flatten() -#X = X[np.where(disc > 0.)].flatten() -#Y = Y[np.where(disc > 0.)].flatten() -#Z = Z[np.where(disc > 0.)].flatten() +# X = X[np.where(disc > 0.)].flatten() +# Y = Y[np.where(disc > 0.)].flatten() +# Z = Z[np.where(disc > 0.)].flatten() # Subsample for performance (optional) -#sample = np.random.choice(len(X), size=20000, replace=False) -#X, Y, Z = X[sample], Y[sample], Z[sample] +# sample = np.random.choice(len(X), size=20000, replace=False) +# X, Y, Z = X[sample], Y[sample], Z[sample] # Plot point cloud fig = plt.figure(figsize=(8, 6)) -ax = fig.add_subplot(111, projection='3d') -sc = ax.scatter(X, Y, Z, c=Z, cmap='viridis', s=1) +ax = fig.add_subplot(111, projection="3d") +sc = ax.scatter(X, Y, Z, c=Z, cmap="viridis", s=1) sc = ax.scatter(xs, ys, zs, s=1) -ax.set_xlabel('X [m]') -ax.set_ylabel('Y [m]') -ax.set_zlabel('Z [m]') +ax.set_xlabel("X [m]") +ax.set_ylabel("Y [m]") +ax.set_zlabel("Z [m]") set_axes_equal(ax) plt.title("3D Point Cloud from Depth Calculation") plt.show() diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere2.py b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere2.py index 9ef07d24b..6e6847b10 100755 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere2.py +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere2.py @@ -2,6 +2,7 @@ import numpy as np import matplotlib.pyplot as plt + def set_axes_equal(ax): """Set 3D plot axes to equal scale so spheres look like spheres.""" x_limits = ax.get_xlim3d() @@ -22,6 +23,7 @@ def set_axes_equal(ax): ax.set_ylim3d([mid_y - max_range, mid_y + max_range]) ax.set_zlim3d([mid_z - max_range, mid_z + max_range]) + def set_axes_equal_so(ax): """ Make axes of 3D plot have equal scale so that spheres appear as spheres, @@ -44,158 +46,173 @@ def set_axes_equal_so(ax): # The plot bounding box is a sphere in the sense of the infinity # norm, hence I call half the max range the plot radius. - plot_radius = 0.5*max([x_range, y_range, z_range]) + plot_radius = 0.5 * max([x_range, y_range, z_range]) ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius]) ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius]) ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius]) + xs = [] ys = [] zs = [] - + # Image size width = 480 height = 270 # Camera parameters -cx = float(width)/2. # principal point x -cy = float(height)/2. # principal point y -fx = 233.82684326171875 # focal length x -fy = 233.8268585205078 # focal length y +cx = float(width) / 2.0 # principal point x +cy = float(height) / 2.0 # principal point y +fx = 233.82684326171875 # focal length x +fy = 233.8268585205078 # focal length y baseline = 0.12 # stereo baseline in meters -expansion_radius = 2. -scale = 1000000. +expansion_radius = 2.0 +scale = 1000000.0 + def horizontal(coord_x, coord_y, center, is_fg): - center_depth = fx*baseline/center + center_depth = fx * baseline / center radius = int(expansion_radius * center / baseline) - a_0 = (coord_x - cx)/fx - b = (coord_y - cy)/fy - b_0 = (coord_y - cy)/fy + a_0 = (coord_x - cx) / fx + b = (coord_y - cy) / fy + b_0 = (coord_y - cy) / fy Zc = center_depth - Xc = a_0*Zc + Xc = a_0 * Zc - for dx in range(-radius, radius+1): + for dx in range(-radius, radius + 1): px = coord_x + dx py = coord_y if px < 0 or px >= width: continue - a = (px - cx)/fx - A = a*a + b*b + 1 - B = -2.*Zc*(a*a_0 + b*b_0 + 1) - C = Zc*Zc*(a_0*a_0 + b_0*b_0 + 1) - expansion_radius*expansion_radius + a = (px - cx) / fx + A = a * a + b * b + 1 + B = -2.0 * Zc * (a * a_0 + b * b_0 + 1) + C = Zc * Zc * (a_0 * a_0 + b_0 * b_0 + 1) - expansion_radius * expansion_radius - sign = -1. + sign = -1.0 if not is_fg: - sign = 1. - Zp = (-B + sign*np.sqrt(B*B - 4.*A*C))/(2.*A) - new_disp = int(scale*fx*baseline/Zp) - - Xp = a*Zp - raw_angle = np.arctan((Xp - Xc)/(Zp - Zc)) - angle = int((raw_angle + np.pi/2.) / np.pi * 1000.) + sign = 1.0 + Zp = (-B + sign * np.sqrt(B * B - 4.0 * A * C)) / (2.0 * A) + new_disp = int(scale * fx * baseline / Zp) + + Xp = a * Zp + raw_angle = np.arctan((Xp - Xc) / (Zp - Zc)) + angle = int((raw_angle + np.pi / 2.0) / np.pi * 1000.0) new_disp = (new_disp & ~0x3FF) | (angle & 0x3FF) - #print('h', raw_angle) + # print('h', raw_angle) vertical(px, py, new_disp, is_fg) # visualization - z = fx*baseline/(float(new_disp)/scale) - x = (px - cx)*z/fx - y = (py - cy)*z/fy + z = fx * baseline / (float(new_disp) / scale) + x = (px - cx) * z / fx + y = (py - cy) * z / fy xs.append(x) ys.append(y) zs.append(z) + def vertical(coord_x, coord_y, center, is_fg): - center_depth = fx*baseline / (float(center) / scale) - radius = int(expansion_radius + float(center)/scale / baseline) - a = (coord_x - cx)/fx - b_0 = (coord_y - cy)/fy - - angle = float(center & 0x3FF) / 1000. * np.pi - np.pi/2. - #print('v', angle) - Zc = center_depth + expansion_radius*np.cos(angle) - Xc = (coord_x - cx)*center_depth/fx + expansion_radius*np.sin(angle) + center_depth = fx * baseline / (float(center) / scale) + radius = int(expansion_radius + float(center) / scale / baseline) + a = (coord_x - cx) / fx + b_0 = (coord_y - cy) / fy + + angle = float(center & 0x3FF) / 1000.0 * np.pi - np.pi / 2.0 + # print('v', angle) + Zc = center_depth + expansion_radius * np.cos(angle) + Xc = (coord_x - cx) * center_depth / fx + expansion_radius * np.sin(angle) if not is_fg: - Zc = center_depth - expansion_radius*np.cos(angle) - Xc = (coord_x - cx)*center_depth/fx - expansion_radius*np.sin(angle) - a_0 = Xc/Zc - - uc = fx*a_0 + cx - vc = fy*b_0 + cy - ru = fx*expansion_radius/Zc - rv = fy*expansion_radius/Zc - - ymin = int(np.floor(vc - rv*np.sqrt(1. - ((coord_x - uc)*(coord_x - uc))/(ru*ru)))) - ymax = int(np.ceil(vc + rv*np.sqrt(1. - ((coord_x - uc)*(coord_x - uc))/(ru*ru)))) + Zc = center_depth - expansion_radius * np.cos(angle) + Xc = (coord_x - cx) * center_depth / fx - expansion_radius * np.sin(angle) + a_0 = Xc / Zc + + uc = fx * a_0 + cx + vc = fy * b_0 + cy + ru = fx * expansion_radius / Zc + rv = fy * expansion_radius / Zc + + ymin = int( + np.floor(vc - rv * np.sqrt(1.0 - ((coord_x - uc) * (coord_x - uc)) / (ru * ru))) + ) + ymax = int( + np.ceil(vc + rv * np.sqrt(1.0 - ((coord_x - uc) * (coord_x - uc)) / (ru * ru))) + ) if not is_fg: print(ymin - ymax) - for y in range(ymin, ymax+1): + for y in range(ymin, ymax + 1): px = coord_x py = y if py < 0 or py >= height: continue - b = (py - cy)/fy - A = a*a + b*b + 1 - B = -2.*Zc*(a*a_0 + b*b_0 + 1) - C = Zc*Zc*(a_0*a_0 + b_0*b_0 + 1) - expansion_radius*expansion_radius - if((B*B - 4.*A*C) < 0.): - continue; - - sign = -1. + b = (py - cy) / fy + A = a * a + b * b + 1 + B = -2.0 * Zc * (a * a_0 + b * b_0 + 1) + C = Zc * Zc * (a_0 * a_0 + b_0 * b_0 + 1) - expansion_radius * expansion_radius + if (B * B - 4.0 * A * C) < 0.0: + continue + + sign = -1.0 if not is_fg: - sign = 1. - Zp = (-B + sign*np.sqrt(B*B - 4.*A*C))/(2.*A) - new_disp = fx*baseline / Zp - - z = fx*baseline/new_disp - x = (px - cx)*z/fx - y = (py - cy)*z/fy + sign = 1.0 + Zp = (-B + sign * np.sqrt(B * B - 4.0 * A * C)) / (2.0 * A) + new_disp = fx * baseline / Zp + + z = fx * baseline / new_disp + x = (px - cx) * z / fx + y = (py - cy) * z / fy xs.append(x) ys.append(y) zs.append(z) - -#coord_x = float(int(3*width/4)) -#coord_y = float(int(height/2)) -coord_x = float(int(width/2)) -coord_y = float(int(height/2)) -center = 2. + +# coord_x = float(int(3*width/4)) +# coord_y = float(int(height/2)) +coord_x = float(int(width / 2)) +coord_y = float(int(height / 2)) +center = 2.0 horizontal(coord_x, coord_y, center, True) horizontal(coord_x, coord_y, center, False) # Plot point cloud fig = plt.figure(figsize=(8, 6)) -ax = fig.add_subplot(111, projection='3d') -#sc = ax.scatter(X, Y, Z, c=Z, cmap='viridis', s=1) +ax = fig.add_subplot(111, projection="3d") +# sc = ax.scatter(X, Y, Z, c=Z, cmap='viridis', s=1) sc = ax.scatter(xs, ys, zs, s=1) -ax.set_xlabel('X [m]') -ax.set_ylabel('Y [m]') -ax.set_zlabel('Z [m]') -#set_axes_equal_so(ax) +ax.set_xlabel("X [m]") +ax.set_ylabel("Y [m]") +ax.set_zlabel("Z [m]") +# set_axes_equal_so(ax) # Create cubic bounding box to simulate equal aspect ratio xs = np.array(xs) ys = np.array(ys) zs = np.array(zs) -max_range = np.array([xs.max()-xs.min(), ys.max()-ys.min(), zs.max()-zs.min()]).max() -Xb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][0].flatten() + 0.5*(xs.max()+xs.min()) -Yb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][1].flatten() + 0.5*(ys.max()+ys.min()) -Zb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][2].flatten() + 0.5*(zs.max()+zs.min()) +max_range = np.array( + [xs.max() - xs.min(), ys.max() - ys.min(), zs.max() - zs.min()] +).max() +Xb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][0].flatten() + 0.5 * ( + xs.max() + xs.min() +) +Yb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][1].flatten() + 0.5 * ( + ys.max() + ys.min() +) +Zb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][2].flatten() + 0.5 * ( + zs.max() + zs.min() +) # Comment or uncomment following both lines to test the fake bounding box: for xb, yb, zb in zip(Xb, Yb, Zb): - ax.plot([xb], [yb], [zb], 'w') + ax.plot([xb], [yb], [zb], "w") ax.set_box_aspect((1, 1, 1)) plt.title("3D Point Cloud from Depth Calculation") plt.show() diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere_point.py b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere_point.py index 87f1e7a81..fa510929a 100755 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere_point.py +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/scripts/sphere_point.py @@ -2,36 +2,38 @@ import numpy as np import matplotlib.pyplot as plt + def test(): - c = np.array([3., 1.]) + c = np.array([3.0, 1.0]) ps = [] - - for a in np.arange(-np.pi/2, np.pi/2.+.01, np.pi/8.): + + for a in np.arange(-np.pi / 2, np.pi / 2.0 + 0.01, np.pi / 8.0): angle = a - #angle = 0. + # angle = 0. p = c + np.array([np.cos(angle), np.sin(angle)]) - ang = np.arctan((p[1] - c[1])/(p[0] - c[0])) - ang = (ang + np.pi/2.)/np.pi*1000. # 0 to 1000 + ang = np.arctan((p[1] - c[1]) / (p[0] - c[0])) + ang = (ang + np.pi / 2.0) / np.pi * 1000.0 # 0 to 1000 ang = int(ang) print(ang) ang = float(ang) - ang = ang/1000.*np.pi - np.pi/2. + ang = ang / 1000.0 * np.pi - np.pi / 2.0 print(angle, ang) ps.append(p) ps = np.array(ps) print(ps) - plt.plot(c[0], c[1], 'o') - plt.plot(ps[:, 0], ps[:, 1], '.') - plt.axis('equal') + plt.plot(c[0], c[1], "o") + plt.plot(ps[:, 0], ps[:, 1], ".") + plt.axis("equal") plt.show() test() -def orthonormal_equator_basis(n, r_ref=np.array([0.0,0.0,-1.0]), eps=1e-12): + +def orthonormal_equator_basis(n, r_ref=np.array([0.0, 0.0, -1.0]), eps=1e-12): """ Return orthonormal basis (e1, e2) spanning the plane orthogonal to n. Prefer to use the projection of r_ref into that plane. If projection is @@ -65,13 +67,16 @@ def orthonormal_equator_basis(n, r_ref=np.array([0.0,0.0,-1.0]), eps=1e-12): e1 = e1 / np.linalg.norm(e1) e2 = np.cross(n, e1) # already unit if n,e1 are orthonormal - #e2 *= -1 - e1 = np.array([0,0,-1]) - e2 = np.array([1,0,0]) - print('e', e1, e2) + # e2 *= -1 + e1 = np.array([0, 0, -1]) + e2 = np.array([1, 0, 0]) + print("e", e1, e2) return e1, e2 -def compute_center_equator(P, R, phi, n=np.array([0.0,0.0,1.0]), r_ref=np.array([0.0,0.0,-1.0])): + +def compute_center_equator( + P, R, phi, n=np.array([0.0, 0.0, 1.0]), r_ref=np.array([0.0, 0.0, -1.0]) +): """ Compute sphere center from: P: point on equator (3,) @@ -84,6 +89,7 @@ def compute_center_equator(P, R, phi, n=np.array([0.0,0.0,1.0]), r_ref=np.array( C = P - R * (np.cos(phi) * e1 + np.sin(phi) * e2) return C, e1, e2 + # ---------------------------- # Example: generate and recover # ---------------------------- @@ -92,16 +98,18 @@ def compute_center_equator(P, R, phi, n=np.array([0.0,0.0,1.0]), r_ref=np.array( # True center (camera coords) and axis C_true = np.array([0.5, 0.0, 3.0]) -n = np.array([0.0, 1.0, 0.0]) # upright sphere (this makes r_ref parallel/opposite) +n = np.array([0.0, 1.0, 0.0]) # upright sphere (this makes r_ref parallel/opposite) # Build equator basis robustly (this will use fallback since r_ref is opposite n) -e1, e2 = orthonormal_equator_basis(n, r_ref=np.array([0.0,0.0,-1.0])) +e1, e2 = orthonormal_equator_basis(n, r_ref=np.array([0.0, 0.0, -1.0])) # top and point P on equator at phi_true P_top = C_true + R * e1 P = C_true + R * (np.cos(phi_true) * e1 + np.sin(phi_true) * e2) # Recover center from P, R, phi_true -C_est, e1_est, e2_est = compute_center_equator(P, R, phi_true, n=n, r_ref=np.array([0.0,0.0,-1.0])) +C_est, e1_est, e2_est = compute_center_equator( + P, R, phi_true, n=n, r_ref=np.array([0.0, 0.0, -1.0]) +) print("True center: ", C_true) print("Estimated center:", C_est) @@ -110,31 +118,31 @@ def compute_center_equator(P, R, phi, n=np.array([0.0,0.0,1.0]), r_ref=np.array( # ---------------------------- # Plot for verification # ---------------------------- -fig = plt.figure(figsize=(8,6)) -ax = fig.add_subplot(111, projection='3d') +fig = plt.figure(figsize=(8, 6)) +ax = fig.add_subplot(111, projection="3d") # Sphere surface -u_grid, v_grid = np.mgrid[0:2*np.pi:60j, 0:np.pi:30j] +u_grid, v_grid = np.mgrid[0 : 2 * np.pi : 60j, 0 : np.pi : 30j] xs = C_true[0] + R * np.cos(u_grid) * np.sin(v_grid) ys = C_true[1] + R * np.sin(u_grid) * np.sin(v_grid) zs = C_true[2] + R * np.cos(v_grid) -ax.plot_surface(xs, ys, zs, color='lightblue', alpha=0.4, linewidth=0) +ax.plot_surface(xs, ys, zs, color="lightblue", alpha=0.4, linewidth=0) # Points and vectors -ax.scatter(*C_true, color='k', label='True Center', s=60) -ax.scatter(*P_top, color='g', label='Top (phi=0)', s=50) -ax.scatter(*P, color='r', label='Equator point P', s=50) -ax.scatter(*C_est, color='orange', label='Recovered Center', s=80, marker='x') +ax.scatter(*C_true, color="k", label="True Center", s=60) +ax.scatter(*P_top, color="g", label="Top (phi=0)", s=50) +ax.scatter(*P, color="r", label="Equator point P", s=50) +ax.scatter(*C_est, color="orange", label="Recovered Center", s=80, marker="x") # show e1/e2 basis at center scale = 0.5 -ax.quiver(*(C_true), *(e1*scale), color='g', length=scale, normalize=False) -ax.quiver(*(C_true), *(e2*scale), color='m', length=scale, normalize=False) +ax.quiver(*(C_true), *(e1 * scale), color="g", length=scale, normalize=False) +ax.quiver(*(C_true), *(e2 * scale), color="m", length=scale, normalize=False) -ax.set_xlabel('X (right)') -ax.set_ylabel('Y (down)') -ax.set_zlabel('Z (forward)') -ax.set_box_aspect([1,1,1]) +ax.set_xlabel("X (right)") +ax.set_ylabel("Y (down)") +ax.set_zlabel("Z (forward)") +ax.set_box_aspect([1, 1, 1]) ax.legend() -ax.set_title('Robust center recovery (handles r_ref || n)') +ax.set_title("Robust center recovery (handles r_ref || n)") plt.show() diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/droan.cpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/droan.cpp deleted file mode 100644 index 034e58828..000000000 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/droan.cpp +++ /dev/null @@ -1,901 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -void printUniformBlockLayout(GLuint program, const std::string& blockName) -{ - GLuint blockIndex = glGetUniformBlockIndex(program, blockName.c_str()); - if (blockIndex == GL_INVALID_INDEX) { - std::cerr << "Block " << blockName << " not found in shader.\n"; - return; - } - - // Get the number of active uniforms in the block - GLint numUniforms = 0; - glGetActiveUniformBlockiv(program, blockIndex, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, &numUniforms); - - std::vector uniformIndices(numUniforms); - glGetActiveUniformBlockiv(program, blockIndex, GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, uniformIndices.data()); - - std::cout << "=== Layout of UBO: " << blockName << " ===\n"; - -for (int i = 0; i < numUniforms; ++i) { - GLuint uniformIndex = uniformIndices[i]; - - // Query uniform name - char nameBuf[128]; - GLsizei nameLen; - glGetActiveUniformName(program, uniformIndex, sizeof(nameBuf), &nameLen, nameBuf); - - // Query properties individually - GLint offset = 0; - GLint arrayStride = 0; - GLint matrixStride = 0; - GLint type = 0; - - glGetActiveUniformsiv(program, 1, &uniformIndex, GL_UNIFORM_OFFSET, &offset); - glGetActiveUniformsiv(program, 1, &uniformIndex, GL_UNIFORM_ARRAY_STRIDE, &arrayStride); - glGetActiveUniformsiv(program, 1, &uniformIndex, GL_UNIFORM_MATRIX_STRIDE, &matrixStride); - glGetActiveUniformsiv(program, 1, &uniformIndex, GL_UNIFORM_TYPE, &type); - - std::cout << " " << nameBuf - << " @ offset=" << offset - << ", arrayStride=" << arrayStride - << ", matrixStride=" << matrixStride - << ", type=0x" << std::hex << type << std::dec << "\n"; -} -} - -struct CameraIntrinsics { - float fx, fy, cx, cy, baseline; - int width, height; - bool valid = false; -}; - -struct Mesh { - unsigned int VAO, VBO, EBO; - size_t index_count; -}; - -struct GraphNode { - int fg_index; - int bg_index; - tf2::Stamped tf; -}; - -struct alignas(16) Vec3 { - float x, y, z; -}; - -struct alignas(16) State { - Vec3 pos; - Vec3 vel; - Vec3 acc; - Vec3 jerk; - Vec3 collision; - - State(){} - State(airstack_msgs::msg::Odometry odom){ - pos.x = odom.pose.position.x; - pos.y = odom.pose.position.y; - pos.z = odom.pose.position.z; - - vel.x = odom.twist.linear.x; - vel.y = odom.twist.linear.y; - vel.z = odom.twist.linear.z; - - acc.x = odom.acceleration.x; - acc.y = odom.acceleration.y; - acc.z = odom.acceleration.z; - - jerk.x = odom.jerk.x; - jerk.y = odom.jerk.y; - jerk.z = odom.jerk.z; - } -}; - -struct TrajectoryParams { - float vel_desired[3]; - float vel_max; -}; - -struct alignas(16) CommonInit { - State initial_state; - int traj_count; - int traj_size; - float dt; -}; - -struct mat4 { - float data[16]; - - mat4(){ - std::memset(&data[0], 0, sizeof(data)); - } - - mat4(const tf2::Stamped& stamped_tf){ - //const tf2::Transform& tf = stamped_tf.getTransform(); - const tf2::Vector3& t = stamped_tf.getOrigin(); - tf2::Matrix3x3 R = stamped_tf.getBasis(); - - data[0] = R[0][0]; - data[1] = R[1][0]; - data[2] = R[2][0]; - data[3] = 0.0f; - - data[4] = R[0][1]; - data[5] = R[1][1]; - data[6] = R[2][1]; - data[7] = 0.0f; - - data[8] = R[0][2]; - data[9] = R[1][2]; - data[10] = R[2][2]; - data[11] = 0.0f; - - data[12] = t.x(); - data[13] = t.y(); - data[14] = t.z(); - data[15] = 1.0f; - } -}; - -struct alignas(16) CollisionInfo { - mat4 state_tf; - float fx, fy, cx, cy; - float baseline; - int width, height; - int limit; -}; - -struct DisparityPoint { - float x, y, z; - - bool operator<(const DisparityPoint& other) const { - float dist = x*x + y*y + z*z; - float other_dist = other.x*other.x + other.y*other.y + other.z*other.z; - return dist < other_dist; - //return z < other.z; - } -}; - -class DisparitySphereRenderer : public rclcpp::Node { -public: - DisparitySphereRenderer() - : Node("disparity_sphere_renderer") - { - disparity_sub_ = create_subscription("/robot_1/sensors/front_stereo/disparity", 10, - std::bind(&DisparitySphereRenderer::disparity_callback, - this, std::placeholders::_1)); - caminfo_sub_ = create_subscription("/robot_1/sensors/front_stereo/right/camera_info", 10, - std::bind(&DisparitySphereRenderer::camera_info_callback, - this, std::placeholders::_1)); - look_ahead_sub = create_subscription("/robot_1/trajectory_controller/look_ahead", 10, - std::bind(&DisparitySphereRenderer::look_ahead_callback, - this, std::placeholders::_1)); - tf_buffer = new tf2_ros::Buffer(get_clock()); - tf_listener = new tf2_ros::TransformListener(*tf_buffer); - - rendered_pub_ = create_publisher("/disparity_spheres_image", 10); - fg_bg_cloud_pub_ = create_publisher("fg_bg_cloud", 10); - traj_debug_pub_ = create_publisher("traj_debug", 1); - - - target_frame = airstack::get_param(this, "target_frame", std::string("map")); - look_ahead_frame = airstack::get_param(this, "look_ahead_frame", std::string("look_ahead_point")); - graph_nodes = airstack::get_param(this, "graph_nodes", 1); - expansion_radius = airstack::get_param(this, "expansion_radius", 2.0); - dt = airstack::get_param(this, "dt", 0.2); - ht = airstack::get_param(this, "ht", 50.0); - - total_layers = graph_nodes*2; - look_ahead_valid = false; - opengl_inited = false; - - timer = rclcpp::create_timer(this, get_clock(), rclcpp::Duration::from_seconds(1./5.), - std::bind(&DisparitySphereRenderer::timer_callback, this)); - } - - ~DisparitySphereRenderer() { - glfwTerminate(); - } - -private: - rclcpp::Subscription::SharedPtr disparity_sub_; - rclcpp::Subscription::SharedPtr caminfo_sub_; - rclcpp::Subscription::SharedPtr look_ahead_sub; - tf2_ros::TransformListener* tf_listener; - tf2_ros::Buffer* tf_buffer; - - rclcpp::Publisher::SharedPtr rendered_pub_; - rclcpp::Publisher::SharedPtr fg_bg_cloud_pub_; - rclcpp::Publisher::SharedPtr traj_debug_pub_; - - rclcpp::TimerBase::SharedPtr timer; - - pcl::PointCloud fg_bg_cloud; - - bool opengl_inited; - - std::mutex data_mutex_; - cv::Mat disparity_image_; - CameraIntrinsics intrinsics_; - - GLFWwindow* window_; - GLuint sphere_vao_, sphere_vbo_, instance_vbo_; - GLuint framebuffer_, color_tex_, depth_tex_, disparity_tex_; - GLuint shader_program_; - Mesh sphere_mesh; - - GLuint traj_shader, collision_shader; - - std::string target_frame; - int graph_nodes; - int total_layers; - float expansion_radius; - - std::deque graph; - - bool look_ahead_valid; - airstack_msgs::msg::Odometry look_ahead; - std::string look_ahead_frame; - std::vector traj_params; - float dt, ht; - GLuint common_ubo, collision_info_ubo; - GLuint params_ssbo, traj_ssbo, transform_ssbo; - - vis::MarkerArray traj_markers; - - GLuint elapsed_query; - - void gl_tic(){ - glBeginQuery(GL_TIME_ELAPSED, elapsed_query); - } - - float gl_toc(){ - glEndQuery(GL_TIME_ELAPSED); - GLuint64 elapsed_ns = 0; - glGetQueryObjectui64v(elapsed_query, GL_QUERY_RESULT, &elapsed_ns); - float elapsed_ms = elapsed_ns / 1e6; - return elapsed_ms; - } - - void init_opengl() { - // TODO auto detect whether or not to use egl or glfw based on whether egl is able to find a non software renderer - //* - if(!glfwInit()) { - throw std::runtime_error("Failed to initialize GLFW"); - } - - glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); - window_ = glfwCreateWindow(640, 480, "Offscreen", nullptr, nullptr); - glfwMakeContextCurrent(window_); - gladLoadGLLoader((GLADloadproc)glfwGetProcAddress); - //*/ - - /* - static const EGLint configAttribs[] = { - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, - EGL_BLUE_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_RED_SIZE, 8, - EGL_DEPTH_SIZE, 24, - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, - EGL_NONE - }; - - static const EGLint pbufferAttribs[] = { - EGL_WIDTH, intrinsics_.width, - EGL_HEIGHT, intrinsics_.height, - EGL_NONE, - }; - EGLDisplay eglDpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); - EGLint major, minor; - eglInitialize(eglDpy, &major, &minor); - EGLint numConfigs; - EGLConfig eglCfg; - eglChooseConfig(eglDpy, configAttribs, &eglCfg, 1, &numConfigs); - EGLSurface eglSurf = eglCreatePbufferSurface(eglDpy, eglCfg, - pbufferAttribs); - eglBindAPI(EGL_OPENGL_API); - EGLContext eglCtx = eglCreateContext(eglDpy, eglCfg, EGL_NO_CONTEXT, - NULL); - eglMakeCurrent(eglDpy, eglSurf, eglSurf, eglCtx); - if(!gladLoadGLLoader((GLADloadproc)eglGetProcAddress)) - std::cout << "Failed to initialize GLAD!" << std::endl; - //*/ - - // from now on use your OpenGL context - std::cout << "Renderer: " << glGetString(GL_RENDERER) << std::endl; - std::cout << "Vendor: " << glGetString(GL_VENDOR) << std::endl; - std::cout << "Version: " << glGetString(GL_VERSION) << std::endl; - GLint maxVertexUniforms = 0; - glGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &maxVertexUniforms); - std::cout << "Max vertex uniforms: " << maxVertexUniforms << std::endl; - GLint maxFragmentUniforms = 0; - glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS, &maxFragmentUniforms); - std::cout << "Max fragment uniforms: " << maxFragmentUniforms << std::endl; - - // Create framebuffer - glGenFramebuffers(1, &framebuffer_); - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); - - glGenTextures(1, &color_tex_); - glBindTexture(GL_TEXTURE_2D_ARRAY, color_tex_); - glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, GL_R32F, intrinsics_.width, intrinsics_.height, total_layers); - glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, color_tex_, 0); - - glGenTextures(1, &depth_tex_); - glBindTexture(GL_TEXTURE_2D_ARRAY, depth_tex_); - glTexStorage3D(GL_TEXTURE_2D_ARRAY, - 1, - GL_DEPTH_COMPONENT32F, - intrinsics_.width, intrinsics_.height, - total_layers); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depth_tex_, 0); - - // disparity texture - glGenTextures(1, &disparity_tex_); - glBindTexture(GL_TEXTURE_2D, disparity_tex_); - glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32F, intrinsics_.width, intrinsics_.height); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - - if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - throw std::runtime_error("Framebuffer not complete"); - - glBindFramebuffer(GL_FRAMEBUFFER, 0); - - shader_program_ = create_shader(); - - std::string traj_comp_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/trajectory.cs"; - GLuint traj_cs = compile_shader(GL_COMPUTE_SHADER, traj_comp_filename); - traj_shader = glCreateProgram(); - glAttachShader(traj_shader, traj_cs); - glLinkProgram(traj_shader); - glDeleteShader(traj_cs); - - std::string collision_comp_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/collision.cs"; - GLuint collision_cs = compile_shader(GL_COMPUTE_SHADER, collision_comp_filename); - collision_shader = glCreateProgram(); - glAttachShader(collision_shader, collision_cs); - glLinkProgram(collision_shader); - glDeleteShader(collision_cs); - - glViewport(0,0,intrinsics_.width,intrinsics_.height); - glClearColor(0,0,0,1); - glEnable(GL_DEPTH_TEST); - //glDepthMask(GL_TRUE); - - glGenQueries(1, &elapsed_query); - - // trajectory generation init - /* - for(float p = -15.f; p < 16.f; p += 15.f){ - for(float y = 0.f; y < 360.f; y += 10.f){ - float yaw = y*M_PI/180.f; - float pitch = p*M_PI/180.f; - - TrajectoryParams params; - params.vel_desired[0] = sin(yaw); - params.vel_desired[1] = cos(yaw); - params.vel_desired[2] = sin(pitch);//0.f; - params.vel_max = 2.f; - - traj_params.push_back(params); - } - } - */ - for(float p = -80.f; p < 80.f; p += 5.f){ - for(float y = 0.f; y < 360.f; y += 5.f){ - float yaw = y*M_PI/180.f; - float pitch = p*M_PI/180.f; - - TrajectoryParams params; - params.vel_desired[0] = sin(yaw); - params.vel_desired[1] = cos(yaw); - params.vel_desired[2] = sin(pitch);//0.f; - params.vel_max = 2.f; - - traj_params.push_back(params); - } - } - - glGenBuffers(1, &common_ubo); - glBindBuffer(GL_UNIFORM_BUFFER, common_ubo); - glBufferData(GL_UNIFORM_BUFFER, sizeof(CommonInit), nullptr, GL_DYNAMIC_DRAW); - - glGenBuffers(1, ¶ms_ssbo); - glBindBuffer(GL_SHADER_STORAGE_BUFFER, params_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size()*sizeof(TrajectoryParams), traj_params.data(), GL_STATIC_DRAW); - - glGenBuffers(1, &traj_ssbo); - glBindBuffer(GL_SHADER_STORAGE_BUFFER, traj_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size()*get_traj_size()*sizeof(State), nullptr, GL_DYNAMIC_COPY); - - glGenBuffers(1, &transform_ssbo); - glBindBuffer(GL_SHADER_STORAGE_BUFFER, transform_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, graph_nodes*sizeof(mat4), nullptr, GL_DYNAMIC_COPY); - - glGenBuffers(1, &collision_info_ubo); - glBindBuffer(GL_UNIFORM_BUFFER, collision_info_ubo); - glBufferData(GL_UNIFORM_BUFFER, sizeof(CollisionInfo), nullptr, GL_DYNAMIC_DRAW); - - opengl_inited = true; - } - - GLuint create_shader() { - std::string expansion_vert_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/expansion.vert"; - std::string expansion_frag_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/expansion.frag"; - GLuint vs = compile_shader(GL_VERTEX_SHADER, expansion_vert_filename); - GLuint fs = compile_shader(GL_FRAGMENT_SHADER, expansion_frag_filename); - - GLuint prog = glCreateProgram(); - glAttachShader(prog, vs); - glAttachShader(prog, fs); - glLinkProgram(prog); - - glDeleteShader(vs); - glDeleteShader(fs); - return prog; - } - - GLuint compile_shader(GLenum shader_type, std::string filename){ - std::ifstream file(filename); - //RCLCPP_INFO_STREAM(get_logger(), "SHADER FILENAME: " << filename); - if (!file.is_open()) - RCLCPP_ERROR_STREAM(get_logger(), "Failed to open shader file: " << filename); - std::stringstream buffer; - buffer << file.rdbuf(); - std::string buffer_str = buffer.str(); - const char* shader_source = buffer_str.c_str(); - - //RCLCPP_INFO_STREAM(get_logger(), "SHADER: " << shader_source); - - GLuint id = glCreateShader(shader_type); - glShaderSource(id, 1, &shader_source, nullptr); - glCompileShader(id); - - int success; - glGetShaderiv(id, GL_COMPILE_STATUS, &success); - if (!success) { - GLint logLength = 0; - glGetShaderiv(id, GL_INFO_LOG_LENGTH, &logLength); - - std::vector infoLog(logLength); - glGetShaderInfoLog(id, logLength, nullptr, infoLog.data()); - - RCLCPP_ERROR_STREAM(get_logger(), "Shader compilation failed:\n" << infoLog.data()); - } - - return id; - } - - void create_instanced_sphere() { - std::string mesh_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/config/half_sphere_low_res.dae"; - RCLCPP_INFO_STREAM(get_logger(), "mesh filename: " << mesh_filename); - Assimp::Importer importer; - const aiScene* scene = importer.ReadFile(mesh_filename, - aiProcess_Triangulate); - if(!scene || !scene->HasMeshes()){ - RCLCPP_ERROR_STREAM(get_logger(), "Model load failed: " << importer.GetErrorString()); - exit(1); - } - if(scene->mNumMeshes > 1) - RCLCPP_ERROR_STREAM(get_logger(), "Model has " << scene->mNumMeshes << ". Only loading the first one."); - - aiMesh* mesh = scene->mMeshes[0]; - RCLCPP_INFO_STREAM(get_logger(), "Loaded mesh " << 0 << " with " << mesh->mNumVertices << " vertices"); - - std::vector vertices; - std::vector indices; - - for(unsigned i = 0; i < mesh->mNumVertices; i++){ - vertices.push_back(mesh->mVertices[i].x*expansion_radius); - vertices.push_back(mesh->mVertices[i].y*expansion_radius); - vertices.push_back(mesh->mVertices[i].z*expansion_radius); - } - for(unsigned i = 0; i < mesh->mNumFaces; i++) - for(unsigned j = 0; j < mesh->mFaces[i].mNumIndices; j++) - indices.push_back(mesh->mFaces[i].mIndices[j]); - sphere_mesh.index_count = indices.size(); - - glGenVertexArrays(1, &sphere_mesh.VAO); - glBindVertexArray(sphere_mesh.VAO); - - glGenBuffers(1, &sphere_mesh.VBO); - glBindBuffer(GL_ARRAY_BUFFER, sphere_mesh.VBO); - glBufferData(GL_ARRAY_BUFFER, vertices.size()*sizeof(float), vertices.data(), GL_STATIC_DRAW); - glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3*sizeof(float),(void*)0); - glEnableVertexAttribArray(0); - - glGenBuffers(1, &sphere_mesh.EBO); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, sphere_mesh.EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), indices.data(), GL_STATIC_DRAW); - - glGenBuffers(1, &instance_vbo_); - glBindBuffer(GL_ARRAY_BUFFER, instance_vbo_); - glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,3*sizeof(float),(void*)0); - glEnableVertexAttribArray(1); - glVertexAttribDivisor(1,1); - } - - void camera_info_callback(const sensor_msgs::msg::CameraInfo::SharedPtr msg) { - intrinsics_.fx = msg->k[0]; - intrinsics_.fy = msg->k[4]; - intrinsics_.cx = msg->k[2]; - intrinsics_.cy = msg->k[5]; - intrinsics_.baseline = -msg->p.at(3) / msg->p.at(0); - intrinsics_.width = msg->width; - intrinsics_.height = msg->height; - - if(!intrinsics_.valid){ - init_opengl(); - create_instanced_sphere(); - } - - intrinsics_.valid = true; - } - - void disparity_callback(const stereo_msgs::msg::DisparityImage::SharedPtr msg) { - std::lock_guard lock(data_mutex_); - cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg->image, "32FC1"); - disparity_image_ = cv_ptr->image.clone(); - - if(!intrinsics_.valid || disparity_image_.empty()) return; - - GraphNode node; - - try{ - geometry_msgs::msg::TransformStamped t; - t = tf_buffer->lookupTransform(target_frame, msg->header.frame_id, - rclcpp::Time(msg->header.stamp), rclcpp::Duration::from_seconds(0.1)); - tf2::fromMsg(t, node.tf); - } - catch(tf2::TransformException& ex){ - RCLCPP_ERROR_STREAM(get_logger(), "Transform exception in render_spheres: " << ex.what()); - return; - } - - if(graph.size() < graph_nodes){ - node.fg_index = graph.size()*2; - node.bg_index = graph.size()*2 + 1; - graph.push_front(node); - } - else{ - node.fg_index = graph.back().fg_index; - node.bg_index = graph.back().bg_index; - graph.pop_back(); - graph.push_front(node); - } - - - std::vector offsets; - for(int y=0; y(y,x); - if(d <= 0) continue; - - float Z = intrinsics_.baseline * intrinsics_.fx / d; - float X = (x - intrinsics_.cx) * Z / intrinsics_.fx; - float Y = (y - intrinsics_.cy) * Z / intrinsics_.fy; - offsets.push_back({X, Y , Z}); - } - } - //std::sort(offsets.begin(), offsets.end()); - - glBindTexture(GL_TEXTURE_2D, disparity_tex_); - glTexSubImage2D( - GL_TEXTURE_2D, - 0, // mipmap level - 0, 0, // x/y offset - intrinsics_.width, - intrinsics_.height, - GL_RED, // format of CPU data (single channel) - GL_FLOAT, // type of CPU data - disparity_image_.data); - - - gl_tic(); - - glBindBuffer(GL_ARRAY_BUFFER, instance_vbo_); - glBufferData(GL_ARRAY_BUFFER, offsets.size()*sizeof(DisparityPoint), offsets.data(), GL_DYNAMIC_DRAW); - - // foreground - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D_ARRAY, color_tex_); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, color_tex_, 0, node.fg_index); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depth_tex_, 0, node.fg_index); - glClearDepth(1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glDepthFunc(GL_LESS); - //glCullFace(GL_BACK); - - glUseProgram(shader_program_); - glm::mat4 proj = glm::perspective(2.f*atan(((float)intrinsics_.height)/(2.f*intrinsics_.fy)), - ((float)intrinsics_.width)/((float)intrinsics_.height), - 0.01f, 100.0f); - glm::mat4 view = glm::lookAt(glm::vec3(0,0,0), glm::vec3(0,0,1), glm::vec3(0,1,0)); - glUniformMatrix4fv(glGetUniformLocation(shader_program_, "proj"), 1, GL_FALSE, &proj[0][0]); - glUniformMatrix4fv(glGetUniformLocation(shader_program_, "view"), 1, GL_FALSE, &view[0][0]); - glUniform1f(glGetUniformLocation(shader_program_, "baseline_fx"), intrinsics_.baseline * intrinsics_.fx); - glUniform1i(glGetUniformLocation(shader_program_, "tex_array"), 0); - glUniform1f(glGetUniformLocation(shader_program_, "sign"), 1.f); - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, disparity_tex_); - glUniform1i(glGetUniformLocation(shader_program_, "disparity_tex"), 0); - - glBindVertexArray(sphere_mesh.VAO); - glDrawElementsInstanced(GL_TRIANGLES, sphere_mesh.index_count, GL_UNSIGNED_INT, 0, offsets.size()); - - float fg_elapsed = gl_toc(); - gl_tic(); - //* - // background - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, color_tex_, 0, node.bg_index); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depth_tex_, 0, node.bg_index); - glClearDepth(0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glDepthFunc(GL_GREATER); - //glCullFace(GL_FRONT); - glUniform1f(glGetUniformLocation(shader_program_, "sign"), -1.f); - - glBindVertexArray(sphere_mesh.VAO); - glDrawElementsInstanced(GL_TRIANGLES, sphere_mesh.index_count, GL_UNSIGNED_INT, 0, offsets.size()); - //*/ - float bg_elapsed = gl_toc(); - - RCLCPP_INFO_STREAM(get_logger(), "DISP TIMING: " << offsets.size() << " " << fg_elapsed << " " << bg_elapsed << " " << (fg_elapsed + bg_elapsed)); - - publish_texture(); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - } - - void publish_texture() { - fg_bg_cloud.points.clear(); - - std::vector data(intrinsics_.width * intrinsics_.height * total_layers); - glBindTexture(GL_TEXTURE_2D_ARRAY, color_tex_); - glGetTexImage(GL_TEXTURE_2D_ARRAY, 0, GL_RED, GL_FLOAT, data.data()); - - for(const GraphNode& node : graph){ - std::vector indices{node.fg_index, node.bg_index}; - //tf2::Transform tf = node.tf.inverse(); - for(const int& index : indices){ - cv::Mat image(intrinsics_.height, intrinsics_.width, CV_32FC1, data.data() + index*intrinsics_.width*intrinsics_.height); - cv::flip(image, image, 1); - pcl::PointXYZI p; - - for(int y = 0; y < image.rows; y++){ - for(int x = 0; x < image.cols; x++){ - float disp = image.at(y, x); - float depth = intrinsics_.baseline*intrinsics_.fx/disp; - tf2::Vector3 v((x-intrinsics_.cx)*depth/intrinsics_.fx, (y-intrinsics_.cy)*depth/intrinsics_.fy, depth); - tf2::Vector3 v_world = node.tf*v; - p.x = v_world.x(); - p.y = v_world.y(); - p.z = v_world.z(); - p.intensity = (index+1)%2; - - if(disp > 0.f && std::isfinite(disp)) - fg_bg_cloud.points.push_back(p); - } - } - } - } - - sensor_msgs::msg::PointCloud2 output; - pcl::toROSMsg(fg_bg_cloud, output); - // TODO handle transforms correctly - output.header.stamp = this->now(); - output.header.frame_id = "map"; - fg_bg_cloud_pub_->publish(output); - - - int selected_layer = 1; - cv::Mat image(intrinsics_.height, intrinsics_.width, CV_32FC1, data.data() + selected_layer*intrinsics_.width*intrinsics_.height); - cv::flip(image, image, 1); - - cv_bridge::CvImage out_msg; - out_msg.header.stamp = this->now(); - out_msg.header.frame_id = "camera_frame"; - out_msg.encoding = "32FC1"; - out_msg.image = image; - - rendered_pub_->publish(*out_msg.toImageMsg()); - } - - void look_ahead_callback(const airstack_msgs::msg::Odometry::SharedPtr msg) { - look_ahead = *msg; - look_ahead_valid = true; - } - - void timer_callback(){ - if(!look_ahead_valid || !opengl_inited) - return; - - airstack_msgs::msg::Odometry look_ahead_odom; - if(!tflib::transform_odometry(tf_buffer, look_ahead, look_ahead_frame, look_ahead_frame, &look_ahead_odom)) - return; - tf2::Stamped look_ahead_tf; - try{ - geometry_msgs::msg::TransformStamped t; - t = tf_buffer->lookupTransform(target_frame, look_ahead_frame, - look_ahead_odom.header.stamp, rclcpp::Duration::from_seconds(0.1)); - tf2::fromMsg(t, look_ahead_tf); - } - catch(tf2::TransformException& ex){ - RCLCPP_ERROR_STREAM(get_logger(), "Transform exception in render_spheres: " << ex.what()); - return; - } - mat4 look_ahead_mat4(look_ahead_tf); - - CommonInit ci; - ci.initial_state = State(look_ahead_odom); - ci.traj_count = traj_params.size(); - ci.traj_size = get_traj_size(); - ci.dt = dt; - - glMemoryBarrier(GL_ALL_BARRIER_BITS); - - glUseProgram(traj_shader); - - //printUniformBlockLayout(traj_shader, "CommonInit"); - //RCLCPP_INFO_STREAM(get_logger(), offsetof(CommonInit, initial_state) << "|" << sizeof(State) << " " << offsetof(CommonInit, traj_count) << " " << offsetof(CommonInit, traj_size) << " " << offsetof(CommonInit, dt)); - - glBindBuffer(GL_UNIFORM_BUFFER, common_ubo); - CommonInit* ptr = (CommonInit*)glMapBufferRange(GL_UNIFORM_BUFFER, 0, sizeof(CommonInit), - GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); - - *ptr = ci; - glUnmapBuffer(GL_UNIFORM_BUFFER); - - - glBindBufferBase(GL_UNIFORM_BUFFER, 0, common_ubo); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, params_ssbo); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 2, traj_ssbo); - - - gl_tic(); - glDispatchCompute((traj_params.size() + 255) / 256, 1, 1); - float traj_gen_elapsed = gl_toc(); - RCLCPP_INFO_STREAM(get_logger(), "TRAJ GEN TIMING: " << traj_gen_elapsed); - //glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); - glMemoryBarrier(GL_ALL_BARRIER_BITS); - - // collision checking - glUseProgram(collision_shader); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, traj_ssbo); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 2, transform_ssbo); - - // TODO do this only when one is updated, probably in the function where they get updated - // TODO see if mapping a smaller region, ie only the updated mat4, is better - glBindBuffer(GL_SHADER_STORAGE_BUFFER, transform_ssbo); - mat4* transform_ptr = (mat4*)glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, - graph_nodes*sizeof(mat4), - GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); - for(int i = 0; i < std::min(graph_nodes, (int)graph.size()); i++) - transform_ptr[i] = mat4(graph[i].tf); - glUnmapBuffer(GL_SHADER_STORAGE_BUFFER); - - // TODO maybe just pad the trajectory points buffer so that the shader doesn't need to check the limit - //glUniform1i(glGetUniformLocation(collision_shader, "limit"), traj_params.size() * get_traj_size()); - //glUniformMatrix4fv(glGetUniformLocation(collision_shader, "state_tf"), 1, GL_FALSE, &look_ahead_mat4.data[0]); - - // TODO really only have to set this once - CollisionInfo collision_info; - collision_info.state_tf = look_ahead_mat4; - collision_info.fx = intrinsics_.fx; - collision_info.fy = intrinsics_.fy; - collision_info.cx = intrinsics_.cx; - collision_info.cy = intrinsics_.cy; - collision_info.baseline = intrinsics_.baseline; - collision_info.width = intrinsics_.width; - collision_info.height = intrinsics_.height; - collision_info.limit = traj_params.size() * get_traj_size(); - glBindBuffer(GL_UNIFORM_BUFFER, collision_info_ubo); - CollisionInfo* collision_info_ptr = (CollisionInfo*)glMapBufferRange(GL_UNIFORM_BUFFER, 0, sizeof(CommonInit), - GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); - - *collision_info_ptr = collision_info; - glUnmapBuffer(GL_UNIFORM_BUFFER); - glBindBufferBase(GL_UNIFORM_BUFFER, 3, collision_info_ubo); - - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D_ARRAY, color_tex_); - - gl_tic(); - glDispatchCompute((traj_params.size() * get_traj_size() + 255) / 256, 1, 1); - float traj_collision_check_elapsed = gl_toc(); - RCLCPP_INFO_STREAM(get_logger(), "TRAJ COLLISION CHECK TIMING: " << traj_collision_check_elapsed); - //glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); - glMemoryBarrier(GL_ALL_BARRIER_BITS); - - // trajectory visualization - glBindBuffer(GL_SHADER_STORAGE_BUFFER, traj_ssbo); - State* output_data = (State*)glMapBuffer(GL_SHADER_STORAGE_BUFFER, GL_READ_ONLY); - std::vector output_states(traj_params.size()*get_traj_size()); - memcpy(output_states.data(), output_data, output_states.size() * sizeof(State)); - glUnmapBuffer(GL_SHADER_STORAGE_BUFFER); - - traj_markers.overwrite(); - vis::Marker& free_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); - free_markers.set_namespace("free"); - free_markers.set_color(0., 1., 0.); - free_markers.set_scale(0.1, 0.1, 0.1); - vis::Marker& collision_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); - collision_markers.set_namespace("collision"); - collision_markers.set_color(1., 0., 0.); - collision_markers.set_scale(0.1, 0.1, 0.1); - //RCLCPP_INFO_STREAM(get_logger(), "traj " << ci.traj_count << " " << ci.traj_size); - for(int i = 0; i < output_states.size(); i++){ - State& state = output_states[i]; - //RCLCPP_INFO_STREAM(get_logger(), "i " << state.pos.x << " " << state.pos.y << " " << state.pos.z); - - if(state.collision.x >= 0.5) - free_markers.add_point(state.pos.x, state.pos.y, state.pos.z); - else - collision_markers.add_point(state.pos.x, state.pos.y, state.pos.z); - } - //RCLCPP_INFO_STREAM(get_logger(), sizeof(Vec3) << " " << sizeof(State) << " " << sizeof(TrajectoryParams) << " " << sizeof(CommonInit)); - - traj_debug_pub_->publish(traj_markers.get_marker_array()); - } - - int get_traj_size(){ - return ht/dt; - } -}; - -int main(int argc, char** argv){ - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::spin(node); - rclcpp::shutdown(); - return 0; -} diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/expand.cpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/expand.cpp index 4bb67d950..8f763c85f 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/expand.cpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/expand.cpp @@ -47,7 +47,8 @@ #include #include -class DisparityExpanderNode : public rclcpp::Node { +class DisparityExpanderNode : public rclcpp::Node +{ private: rclcpp::Subscription::SharedPtr global_plan_sub; rclcpp::Subscription::SharedPtr disp_sub_; @@ -56,20 +57,20 @@ class DisparityExpanderNode : public rclcpp::Node { rclcpp::Subscription::SharedPtr tracking_point_sub; rclcpp::Subscription::SharedPtr reset_stuck_sub; rclcpp::Subscription::SharedPtr clear_map_sub; - tf2_ros::Buffer* tf_buffer; - tf2_ros::TransformListener* tf_listener; - + tf2_ros::Buffer *tf_buffer; + tf2_ros::TransformListener *tf_listener; + rclcpp::Publisher::SharedPtr fg_pub_, bg_pub_; rclcpp::Publisher::SharedPtr fg_bg_cloud_pub_; rclcpp::Publisher::SharedPtr traj_debug_pub_; rclcpp::Publisher::SharedPtr graph_vis_pub_; rclcpp::Publisher::SharedPtr global_plan_vis_pub; rclcpp::Publisher::SharedPtr traj_pub; - rclcpp::Publisher::SharedPtr stuck_pub; - rclcpp::Publisher::SharedPtr rewind_info_pub; - + rclcpp::Publisher::SharedPtr stuck_pub; + rclcpp::Publisher::SharedPtr rewind_info_pub; + rclcpp::TimerBase::SharedPtr timer; - + std::string target_frame, look_ahead_frame, rewind_info_frame; bool look_ahead_valid; airstack_msgs::msg::Odometry look_ahead; @@ -77,35 +78,36 @@ class DisparityExpanderNode : public rclcpp::Node { vis::MarkerArray traj_markers; bool visualize; - GLInterface* gl_interface; - GlobalPlan* global_plan; - RewindMonitor* rewind_monitor; + GLInterface *gl_interface; + GlobalPlan *global_plan; + RewindMonitor *rewind_monitor; public: DisparityExpanderNode() - : Node("disparity_expander_node"){ + : Node("disparity_expander_node") + { disp_sub_ = create_subscription("disparity", 10, - std::bind(&DisparityExpanderNode::onDisparity, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::onDisparity, + this, std::placeholders::_1)); caminfo_sub_ = create_subscription("camera_info", 10, - std::bind(&DisparityExpanderNode::onCameraInfo, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::onCameraInfo, + this, std::placeholders::_1)); look_ahead_sub = create_subscription("look_ahead", 10, - std::bind(&DisparityExpanderNode::look_ahead_callback, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::look_ahead_callback, + this, std::placeholders::_1)); tracking_point_sub = create_subscription("tracking_point", 10, - std::bind(&DisparityExpanderNode::tracking_point_callback, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::tracking_point_callback, + this, std::placeholders::_1)); global_plan_sub = create_subscription("global_plan", 1, - std::bind(&DisparityExpanderNode::global_plan_callback, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::global_plan_callback, + this, std::placeholders::_1)); reset_stuck_sub = this->create_subscription("reset_stuck", 1, - std::bind(&DisparityExpanderNode::reset_stuck_callback, - this, std::placeholders::_1)); + std::bind(&DisparityExpanderNode::reset_stuck_callback, + this, std::placeholders::_1)); clear_map_sub = this->create_subscription("clear_map", 1, - std::bind(&DisparityExpanderNode::clear_map_callback, - this, std::placeholders::_1)); - + std::bind(&DisparityExpanderNode::clear_map_callback, + this, std::placeholders::_1)); + tf_buffer = new tf2_ros::Buffer(get_clock()); tf_listener = new tf2_ros::TransformListener(*tf_buffer); @@ -118,12 +120,12 @@ class DisparityExpanderNode : public rclcpp::Node { traj_pub = create_publisher("trajectory_segment_to_add", 1); stuck_pub = create_publisher("stuck", 1); rewind_info_pub = create_publisher("rewind_info", 1); - + target_frame = airstack::get_param(this, "target_frame", std::string("map")); look_ahead_frame = airstack::get_param(this, "look_ahead_frame", std::string("look_ahead_point_stabilized")); rewind_info_frame = airstack::get_param(this, "rewind_info_frame", std::string("base_link_stabilized")); visualize = airstack::get_param(this, "visualize", true); - + look_ahead_valid = false; gl_interface = new GLInterface(this, tf_buffer); @@ -131,63 +133,89 @@ class DisparityExpanderNode : public rclcpp::Node { rewind_monitor = new RewindMonitor(this); // TODO make this time a parameter - timer = rclcpp::create_timer(this, get_clock(), rclcpp::Duration::from_seconds(2.*1./5.), - std::bind(&DisparityExpanderNode::timer_callback, this)); + timer = rclcpp::create_timer(this, get_clock(), rclcpp::Duration::from_seconds(2. * 1. / 5.), + std::bind(&DisparityExpanderNode::timer_callback, this)); } private: - void onCameraInfo(const sensor_msgs::msg::CameraInfo::SharedPtr msg){ + /** + * @brief Callback for camera intrinsics messages + * @param msg Camera info message containing intrinsic parameters + * + * Forwards camera intrinsics to the GL interface for initialization of + * GPU-based disparity expansion and collision checking. + */ + void onCameraInfo(const sensor_msgs::msg::CameraInfo::SharedPtr msg) + { gl_interface->handle_camera_info(msg); } - void onDisparity(const stereo_msgs::msg::DisparityImage::SharedPtr msg){ + /** + * @brief Callback for disparity image messages + * @param msg Disparity image from stereo camera + * + * Processes incoming disparity images through GPU-based expansion + * and optionally publishes visualization of the expanded obstacles. + */ + void onDisparity(const stereo_msgs::msg::DisparityImage::SharedPtr msg) + { gl_interface->handle_disparity(msg); - if(visualize) + if (visualize) gl_interface->publish_viz(msg->header, fg_pub_, bg_pub_, fg_bg_cloud_pub_, graph_vis_pub_); } - - void timer_callback(){ - if(!look_ahead_valid) + + /** + * @brief Main execution loop for trajectory planning + * + * Runs at 2.5 Hz to: + * 1. Evaluate trajectories using GPU-based collision checking + * 2. Score collision-free trajectories based on global path alignment + * 3. Select and publish the best trajectory + * 4. Monitor for stuck conditions requiring rewind + */ + void timer_callback() + { + if (!look_ahead_valid) return; std_msgs::msg::Bool stuck_msg; stuck_msg.data = rewind_monitor->should_rewind(); stuck_pub->publish(stuck_msg); rewind_monitor->publish_vis(rewind_info_pub, rewind_info_frame); - + tf2::Transform look_ahead_to_target_tf; gl_interface->evaluate_trajectories(look_ahead, trajectory_points, look_ahead_to_target_tf); - if(trajectory_points.empty()) + if (trajectory_points.empty()) return; global_plan->trim(look_ahead); - + traj_markers.overwrite(); - vis::Marker& free_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); + vis::Marker &free_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); free_markers.set_namespace("free_points"); free_markers.set_color(0., 1., 0.); free_markers.set_scale(0.1, 0.1, 0.1); - vis::Marker& free_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, - 0., 1., 0., 0.8, - 0.1, 0); + vis::Marker &free_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, + 0., 1., 0., 0.8, + 0.1, 0); free_traj_markers.set_namespace("free_trajectories"); - - vis::Marker& collision_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); + + vis::Marker &collision_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); collision_markers.set_namespace("collision_points"); collision_markers.set_color(1., 0., 0.); collision_markers.set_scale(0.1, 0.1, 0.1); - vis::Marker& collision_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, - 1., 0., 0., 0.8, - 0.1, 0); + vis::Marker &collision_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, + 1., 0., 0., 0.8, + 0.1, 0); collision_traj_markers.set_namespace("collision_trajectories"); - - vis::Marker& unseen_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); + + vis::Marker &unseen_markers = traj_markers.add_points(target_frame, look_ahead.header.stamp); unseen_markers.set_namespace("unseen_points"); unseen_markers.set_color(0.7, 0.7, 0.7, 0.3); unseen_markers.set_scale(0.1, 0.1, 0.1); - vis::Marker& unseen_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, - 0.7, 0.7, 0.7, 0.3, - 0.1, 0); + vis::Marker &unseen_traj_markers = traj_markers.add_line_list(target_frame, look_ahead.header.stamp, + 0.7, 0.7, 0.7, 0.3, + 0.1, 0); unseen_traj_markers.set_namespace("unseen_trajectories"); int best_traj_index = -1; @@ -198,86 +226,96 @@ class DisparityExpanderNode : public rclcpp::Node { int COLLISION = 2; int traj_status = SEEN; std::vector traj_points(gl_interface->get_traj_size()); - - for(int i = 0; i < trajectory_points.size(); i++){ - TrajectoryPoint& state = trajectory_points[i]; - int traj_index = i/gl_interface->get_traj_size(); + + for (int i = 0; i < trajectory_points.size(); i++) + { + TrajectoryPoint &state = trajectory_points[i]; + int traj_index = i / gl_interface->get_traj_size(); int point_index = i % gl_interface->get_traj_size(); - //int seen, unseen, collision; - //get_counts(state.w(), &seen, &unseen, &collision); + // int seen, unseen, collision; + // get_counts(state.w(), &seen, &unseen, &collision); int seen = state.get_seen(); int unseen = state.get_unseen(); int collision = state.get_collision(); traj_points[point_index] = tf2::Vector3(state.x(), state.y(), state.z()); - if(collision > 0 && collision > seen){ - is_traj_safe = false; - collision_markers.add_point(state.x(), state.y(), state.z()); - traj_status = COLLISION; + if (collision > 0 && collision > seen) + { + is_traj_safe = false; + collision_markers.add_point(state.x(), state.y(), state.z()); + traj_status = COLLISION; } - else if(seen > 1) - free_markers.add_point(state.x(), state.y(), state.z()); - else{ - is_traj_safe = false; - unseen_markers.add_point(state.x(), state.y(), state.z()); - if(traj_status == SEEN) - traj_status = UNSEEN; + else if (seen > 1) + free_markers.add_point(state.x(), state.y(), state.z()); + else + { + is_traj_safe = false; + unseen_markers.add_point(state.x(), state.y(), state.z()); + if (traj_status == SEEN) + traj_status = UNSEEN; } - + // if last waypoint in trajectory - if(point_index == (gl_interface->get_traj_size() - 1)){ - vis::Marker* tm = &free_traj_markers; - if(traj_status == UNSEEN) - tm = &unseen_traj_markers; - else if(traj_status == COLLISION) - tm = &collision_traj_markers; - - for(int j = 1; j < traj_points.size(); j++){ - tf2::Vector3& curr = traj_points[j]; - tf2::Vector3& prev = traj_points[j-1]; - tm->add_point(prev.x(), prev.y(), prev.z()); - tm->add_point(curr.x(), curr.y(), curr.z()); - } - - int traj_status_log = traj_status; - - traj_status = SEEN; - if(!is_traj_safe){ - is_traj_safe = true; - continue; - } - - auto [deviation, path_distance] = global_plan->get_distance(state.x(), state.y(), state.z()); - //RCLCPP_INFO_STREAM(get_logger(), i << " " << traj_status_log << " " << deviation << " " << path_distance); - if(deviation >= 0 && path_distance >= 0){ - // TODO add weights as ros parameters - float cost = deviation - path_distance; - if(cost < best_traj_cost){ - best_traj_cost = cost; - best_traj_index = traj_index; - } - } + if (point_index == (gl_interface->get_traj_size() - 1)) + { + vis::Marker *tm = &free_traj_markers; + if (traj_status == UNSEEN) + tm = &unseen_traj_markers; + else if (traj_status == COLLISION) + tm = &collision_traj_markers; + + for (int j = 1; j < traj_points.size(); j++) + { + tf2::Vector3 &curr = traj_points[j]; + tf2::Vector3 &prev = traj_points[j - 1]; + tm->add_point(prev.x(), prev.y(), prev.z()); + tm->add_point(curr.x(), curr.y(), curr.z()); + } + + int traj_status_log = traj_status; + + traj_status = SEEN; + if (!is_traj_safe) + { + is_traj_safe = true; + continue; + } + + auto [deviation, path_distance] = global_plan->get_distance(state.x(), state.y(), state.z()); + // RCLCPP_INFO_STREAM(get_logger(), i << " " << traj_status_log << " " << deviation << " " << path_distance); + if (deviation >= 0 && path_distance >= 0) + { + // TODO add weights as ros parameters + float cost = deviation - path_distance; + if (cost < best_traj_cost) + { + best_traj_cost = cost; + best_traj_index = traj_index; + } + } } } - + traj_debug_pub_->publish(traj_markers.get_marker_array()); global_plan->publish_vis(global_plan_vis_pub); - if(best_traj_index < 0){ + if (best_traj_index < 0) + { rewind_monitor->found_trajectory(false); return; } rewind_monitor->found_trajectory(true); - + airstack_msgs::msg::TrajectoryXYZVYaw traj; - for(int i = 0; i < gl_interface->get_traj_size(); i++){ + for (int i = 0; i < gl_interface->get_traj_size(); i++) + { airstack_msgs::msg::WaypointXYZVYaw wp; - TrajectoryPoint& state = trajectory_points[best_traj_index*gl_interface->get_traj_size() + i]; + TrajectoryPoint &state = trajectory_points[best_traj_index * gl_interface->get_traj_size() + i]; tf2::Vector3 p(state.x(), state.y(), state.z()); - p = look_ahead_to_target_tf*p; + p = look_ahead_to_target_tf * p; wp.position.x = p.x(); wp.position.y = p.y(); @@ -293,44 +331,97 @@ class DisparityExpanderNode : public rclcpp::Node { traj_pub->publish(traj); } - void get_counts(float w, int* seen, int* unseen, int* collision){ + /** + * @brief Decode packed collision counts from a float value + * @param w Packed float containing seen, unseen, and collision counts + * @param seen Output parameter for number of seen graph nodes + * @param unseen Output parameter for number of unseen graph nodes + * @param collision Output parameter for number of collision graph nodes + * + * Unpacks three integer counts from a single float using modulo arithmetic. + * Format: seen * 1000000 + unseen * 1000 + collision + * + * @note This function appears to be unused in favor of direct accessor methods + */ + void get_counts(float w, int *seen, int *unseen, int *collision) + { int i = w; - //RCLCPP_INFO_STREAM(get_logger(), "i: " << i); + // RCLCPP_INFO_STREAM(get_logger(), "i: " << i); *collision = i % 1000; i -= *collision; - //RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " collision: " << *collision); - *unseen = (i % 1000000)/1000; - //RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " unseen: " << *unseen); + // RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " collision: " << *collision); + *unseen = (i % 1000000) / 1000; + // RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " unseen: " << *unseen); i -= *unseen * 1000; *seen = i / 1000000; - //RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " seen: " << *seen); + // RCLCPP_INFO_STREAM(get_logger(), "i: " << i << " seen: " << *seen); } - void look_ahead_callback(const airstack_msgs::msg::Odometry::SharedPtr msg) { + /** + * @brief Callback for look-ahead position updates + * @param msg Odometry message for the look-ahead planning point + * + * Updates the look-ahead position used as the starting point for + * trajectory generation. + */ + void look_ahead_callback(const airstack_msgs::msg::Odometry::SharedPtr msg) + { look_ahead = *msg; look_ahead_valid = true; } - - void tracking_point_callback(const airstack_msgs::msg::Odometry::SharedPtr msg) { + + /** + * @brief Callback for tracking point odometry updates + * @param msg Odometry message for the actual robot tracking point + * + * Updates the rewind monitor with the robot's current position + * for stationary detection and rewind distance tracking. + */ + void tracking_point_callback(const airstack_msgs::msg::Odometry::SharedPtr msg) + { rewind_monitor->update_odom(msg); } - void global_plan_callback(const nav_msgs::msg::Path::SharedPtr msg) { + /** + * @brief Callback for global plan updates + * @param msg Path message containing the global plan + * + * Updates the global plan used for scoring trajectories based on + * path alignment and progress. + */ + void global_plan_callback(const nav_msgs::msg::Path::SharedPtr msg) + { global_plan->set_global_plan(msg); } - void reset_stuck_callback(const std_msgs::msg::Empty::SharedPtr msg){ + /** + * @brief Callback to manually reset stuck detection + * @param msg Empty message trigger + * + * Clears the rewind monitor's position history, resetting stuck + * detection when manually commanded. + */ + void reset_stuck_callback(const std_msgs::msg::Empty::SharedPtr msg) + { rewind_monitor->clear_history(); } - void clear_map_callback(const std_msgs::msg::Empty::SharedPtr msg){ + /** + * @brief Callback to clear the obstacle map + * @param msg Empty message trigger + * + * Clears the rewind monitor history and should clear the GL interface + * obstacle map (not yet implemented). + */ + void clear_map_callback(const std_msgs::msg::Empty::SharedPtr msg) + { rewind_monitor->clear_history(); // TODO gl_interface clear map } - }; -int main(int argc, char **argv) { +int main(int argc, char **argv) +{ rclcpp::init(argc, argv); auto node = std::make_shared(); rclcpp::spin(node); diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/gl_interface.cpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/gl_interface.cpp index 0d2ecd519..2f3aa49d9 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/gl_interface.cpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/gl_interface.cpp @@ -1,9 +1,17 @@ #include -GLInterface::GLInterface(rclcpp::Node* node, tf2_ros::Buffer* tf_buffer) - : node(node) - , tf_buffer(tf_buffer){ - +/** + * @brief Constructor for GLInterface + * @param node Pointer to the ROS node for parameter access and logging + * @param tf_buffer Pointer to TF buffer for coordinate transformations + * + * Initializes GL interface with ROS parameters and prepares for + * GPU-based disparity expansion and trajectory collision checking. + */ +GLInterface::GLInterface(rclcpp::Node *node, tf2_ros::Buffer *tf_buffer) + : node(node), tf_buffer(tf_buffer) +{ + target_frame = airstack::get_param(node, "target_frame", std::string("map")); look_ahead_frame = airstack::get_param(node, "look_ahead_frame", std::string("look_ahead_point_stabilized")); graph_nodes = airstack::get_param(node, "graph_nodes", 10); @@ -13,85 +21,110 @@ GLInterface::GLInterface(rclcpp::Node* node, tf2_ros::Buffer* tf_buffer) ht = airstack::get_param(node, "ht", 10.0); downsample_scale = airstack::get_param(node, "downsample_scale", 2); graph_distance_threshold = airstack::get_param(node, "graph_distance_threshold", 1.); - graph_angle_threshold = airstack::get_param(node, "graph_angle_threshold", 30.) * M_PI/180.; - - total_layers = 2*graph_nodes; + graph_angle_threshold = airstack::get_param(node, "graph_angle_threshold", 30.) * M_PI / 180.; + + total_layers = 2 * graph_nodes; scale = 1000000.0; current_node = -1; fx = -1.; look_ahead_valid = false; } - -void GLInterface::handle_camera_info(const sensor_msgs::msg::CameraInfo::SharedPtr msg){ - if(fx > 0.f) +/** + * @brief Process camera intrinsics and initialize OpenGL context + * @param msg Camera info message with intrinsic parameters + * + * Extracts camera intrinsics (focal length, principal point, baseline) + * and initializes the OpenGL context for GPU processing. Only processes + * the first message received. + */ +void GLInterface::handle_camera_info(const sensor_msgs::msg::CameraInfo::SharedPtr msg) +{ + if (fx > 0.f) return; - - fx = static_cast(msg->k[0])/downsample_scale; - fy = static_cast(msg->k[4])/downsample_scale; - cx = static_cast(msg->k[2])/downsample_scale; - cy = static_cast(msg->k[5])/downsample_scale; - image_width = msg->width/downsample_scale; - image_height = msg->height/downsample_scale; + + fx = static_cast(msg->k[0]) / downsample_scale; + fy = static_cast(msg->k[4]) / downsample_scale; + cx = static_cast(msg->k[2]) / downsample_scale; + cy = static_cast(msg->k[5]) / downsample_scale; + image_width = msg->width / downsample_scale; + image_height = msg->height / downsample_scale; baseline = (msg->p[3] / -msg->p[0]); // assuming right camera RCLCPP_INFO_THROTTLE(node->get_logger(), *(node->get_clock()), 5000, - "Camera intrinsics loaded: fx=%.2f fy=%.2f cx=%.2f, cy=%.2f, baseline=%.3f", - fx, fy, cx, cy, baseline); - + "Camera intrinsics loaded: fx=%.2f fy=%.2f cx=%.2f, cy=%.2f, baseline=%.3f", + fx, fy, cx, cy, baseline); + initGL(msg->width, msg->height, image_width, image_height); } - -void GLInterface::handle_disparity(const stereo_msgs::msg::DisparityImage::SharedPtr msg){ - if(!gl_inited) +/** + * @brief Process disparity image and perform GPU-based obstacle expansion + * @param msg Disparity image message from stereo camera + * + * Performs the following GPU operations: + * 1. Updates graph node with current camera pose + * 2. Uploads disparity image to GPU texture + * 3. Executes horizontal and vertical expansion passes + * 4. Generates foreground (close obstacles) and background (far obstacles) layers + * + * Graph nodes are added based on distance/angle thresholds to maintain + * recent obstacle history for robust collision checking. + */ +void GLInterface::handle_disparity(const stereo_msgs::msg::DisparityImage::SharedPtr msg) +{ + if (!gl_inited) return; static std::vector times; int times_limit = 10; - + // udpate graph GraphNode graph_node; - try{ + try + { geometry_msgs::msg::TransformStamped t; t = tf_buffer->lookupTransform(target_frame, msg->header.frame_id, - rclcpp::Time(msg->header.stamp), rclcpp::Duration::from_seconds(0.1)); + rclcpp::Time(msg->header.stamp), rclcpp::Duration::from_seconds(0.1)); tf2::fromMsg(t, graph_node.tf); } - catch(tf2::TransformException& ex){ + catch (tf2::TransformException &ex) + { RCLCPP_ERROR_STREAM(node->get_logger(), "Transform exception in render_spheres: " << ex.what()); return; } - - if((graph.size() < 2) - || - ((graph_node.tf.getOrigin().distance(graph[1].tf.getOrigin()) > graph_distance_threshold) - || (tf2::angleShortestPath(graph_node.tf.getRotation(), graph[1].tf.getRotation()) > graph_angle_threshold))){ + + if ((graph.size() < 2) || + ((graph_node.tf.getOrigin().distance(graph[1].tf.getOrigin()) > graph_distance_threshold) || (tf2::angleShortestPath(graph_node.tf.getRotation(), graph[1].tf.getRotation()) > graph_angle_threshold))) + { current_node = (current_node + 1) % graph_nodes; - - if(graph.size() < graph_nodes){ - graph_node.fg_index = graph.size()*2; - graph_node.bg_index = graph.size()*2 + 1; + + if (graph.size() < graph_nodes) + { + graph_node.fg_index = graph.size() * 2; + graph_node.bg_index = graph.size() * 2 + 1; graph.push_front(graph_node); } - else{ + else + { graph_node.fg_index = graph.back().fg_index; graph_node.bg_index = graph.back().bg_index; graph.pop_back(); graph.push_front(graph_node); } } - else{ + else + { graph_node.fg_index = graph.front().fg_index; graph_node.bg_index = graph.front().bg_index; graph.front().tf = graph_node.tf; } // upload disparity cv::Mat disp; - if(msg->image.encoding == "32FC1") + if (msg->image.encoding == "32FC1") disp = cv::Mat(msg->image.height, msg->image.width, CV_32FC1, &msg->image.data[0], msg->image.step); else disp = cv_bridge::toCvCopy(msg->image, "32FC1")->image; - //disp = 0.f; - //disp.at((int)(disp.rows/2), (int)(disp.cols/2)) = 2.f; + // disp = 0.f; + // disp.at((int)(disp.rows/2), (int)(disp.cols/2)) = 2.f; glBindTexture(GL_TEXTURE_2D, texIn); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, disp.cols, disp.rows, GL_RED, GL_FLOAT, disp.ptr()); glBindTexture(GL_TEXTURE_2D, 0); @@ -100,158 +133,180 @@ void GLInterface::handle_disparity(const stereo_msgs::msg::DisparityImage::Share GLint zero_int = 0; GLint max_int = std::numeric_limits::max(); glClearTexImage(fgHoriz, 0, GL_RED_INTEGER, GL_INT, &zero_int); - glClearTexSubImage(fgFinal, 0, 0, 0, 2*current_node, image_width, image_height, 1, GL_RED_INTEGER, GL_INT, &zero_int); - glClearTexSubImage(fgFinal, 0, 0, 0, 2*current_node+1, image_width, image_height, 1, GL_RED_INTEGER, GL_INT, &max_int); - + glClearTexSubImage(fgFinal, 0, 0, 0, 2 * current_node, image_width, image_height, 1, GL_RED_INTEGER, GL_INT, &zero_int); + glClearTexSubImage(fgFinal, 0, 0, 0, 2 * current_node + 1, image_width, image_height, 1, GL_RED_INTEGER, GL_INT, &max_int); + int work_group_size_x = 16; int work_group_size_y = 16; - + glBindImageTexture(0, fgHoriz, 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32I); glBindImageTexture(1, fgFinal, 0, GL_TRUE, 0, GL_READ_WRITE, GL_R32I); - glBindImageTexture(2, texIn, 0, GL_FALSE, 0, GL_READ_ONLY, GL_R32F); + glBindImageTexture(2, texIn, 0, GL_FALSE, 0, GL_READ_ONLY, GL_R32F); // foreground // horizontal pass glUseProgram(horizProg_); - glUniform1i(glGetUniformLocation(horizProg_, "layer"), 2*current_node); + glUniform1i(glGetUniformLocation(horizProg_, "layer"), 2 * current_node); glUniform1i(glGetUniformLocation(horizProg_, "is_fg"), true); gl_tic(); - glDispatchCompute((image_width + work_group_size_x-1) / work_group_size_x, - (image_height + work_group_size_y-1) / work_group_size_y, 1); + glDispatchCompute((image_width + work_group_size_x - 1) / work_group_size_x, + (image_height + work_group_size_y - 1) / work_group_size_y, 1); float fg_horizontal_elapsed = gl_toc(); glMemoryBarrier(GL_ALL_BARRIER_BITS); - + // vertical pass glUseProgram(vertProg_); - glUniform1i(glGetUniformLocation(vertProg_, "layer"), 2*current_node); + glUniform1i(glGetUniformLocation(vertProg_, "layer"), 2 * current_node); glUniform1i(glGetUniformLocation(vertProg_, "is_fg"), true); gl_tic(); - glDispatchCompute((image_width + work_group_size_x-1) / work_group_size_x, - (image_height + work_group_size_y-1) / work_group_size_y, 1); + glDispatchCompute((image_width + work_group_size_x - 1) / work_group_size_x, + (image_height + work_group_size_y - 1) / work_group_size_y, 1); float fg_vertical_elapsed = gl_toc(); // background glClearTexImage(fgHoriz, 0, GL_RED_INTEGER, GL_INT, &max_int); // horizontal pass glUseProgram(horizProg_); - glUniform1i(glGetUniformLocation(horizProg_, "layer"), 2*current_node+1); + glUniform1i(glGetUniformLocation(horizProg_, "layer"), 2 * current_node + 1); glUniform1i(glGetUniformLocation(horizProg_, "is_fg"), false); gl_tic(); - glDispatchCompute((image_width + work_group_size_x-1) / work_group_size_x, - (image_height + work_group_size_y-1) / work_group_size_y, 1); + glDispatchCompute((image_width + work_group_size_x - 1) / work_group_size_x, + (image_height + work_group_size_y - 1) / work_group_size_y, 1); float bg_horizontal_elapsed = gl_toc(); glMemoryBarrier(GL_ALL_BARRIER_BITS); - + // vertical pass glUseProgram(vertProg_); - glUniform1i(glGetUniformLocation(vertProg_, "layer"), 2*current_node+1); + glUniform1i(glGetUniformLocation(vertProg_, "layer"), 2 * current_node + 1); glUniform1i(glGetUniformLocation(vertProg_, "is_fg"), false); gl_tic(); - glDispatchCompute((image_width + work_group_size_x-1) / work_group_size_x, (image_height + work_group_size_y-1) / work_group_size_y, 1); + glDispatchCompute((image_width + work_group_size_x - 1) / work_group_size_x, (image_height + work_group_size_y - 1) / work_group_size_y, 1); float bg_vertical_elapsed = gl_toc(); // timing float total_time = fg_horizontal_elapsed + fg_vertical_elapsed + bg_horizontal_elapsed + bg_vertical_elapsed; times.push_back(total_time); - if(times.size() > times_limit) + if (times.size() > times_limit) times.erase(times.begin()); float average_time = 0; - for(int i = 0; i < times.size(); i++) + for (int i = 0; i < times.size(); i++) average_time += times[i]; average_time /= times.size(); static int iteration = 0; iteration++; - //RCLCPP_INFO(node->get_logger(), "iteration: %d h v times: %.3f ms, %.3f ms, %.3f ms, %.3f ms, %.3f ms, %.3f ms", - // iteration, fg_horizontal_elapsed, fg_vertical_elapsed, bg_horizontal_elapsed, bg_vertical_elapsed, total_time, average_time); + // RCLCPP_INFO(node->get_logger(), "iteration: %d h v times: %.3f ms, %.3f ms, %.3f ms, %.3f ms, %.3f ms, %.3f ms", + // iteration, fg_horizontal_elapsed, fg_vertical_elapsed, bg_horizontal_elapsed, bg_vertical_elapsed, total_time, average_time); glMemoryBarrier(GL_ALL_BARRIER_BITS); } +/** + * @brief Publish visualization of expanded disparity and graph nodes + * @param hdr Header for timestamp and frame information + * @param fg_pub Publisher for foreground expanded image + * @param bg_pub Publisher for background expanded image + * @param fg_bg_cloud_pub Publisher for 3D point cloud visualization + * @param marker_pub Publisher for camera pose markers + * + * Generates visualizations of: + * - Expanded foreground/background disparity images + * - 3D point cloud of expanded obstacles from all graph nodes + * - Camera pose arrows showing graph node locations + */ void GLInterface::publish_viz(const std_msgs::msg::Header &hdr, - rclcpp::Publisher::SharedPtr fg_pub, - rclcpp::Publisher::SharedPtr bg_pub, - rclcpp::Publisher::SharedPtr fg_bg_cloud_pub, - rclcpp::Publisher::SharedPtr marker_pub){ - if(!gl_inited) + rclcpp::Publisher::SharedPtr fg_pub, + rclcpp::Publisher::SharedPtr bg_pub, + rclcpp::Publisher::SharedPtr fg_bg_cloud_pub, + rclcpp::Publisher::SharedPtr marker_pub) +{ + if (!gl_inited) return; pcl::PointCloud fg_bg_cloud; - std::vector data(image_width*image_height*total_layers); + std::vector data(image_width * image_height * total_layers); glBindTexture(GL_TEXTURE_2D_ARRAY, fgFinal); glGetTexImage(GL_TEXTURE_2D_ARRAY, 0, GL_RED_INTEGER, GL_INT, data.data()); - - for(int i = 0; i < graph.size(); i++){ - const GraphNode& graph_node = graph[i]; - cv::Mat image(image_height, image_width, CV_32S, data.data() + graph_node.fg_index*image_width*image_height); - - if(i == current_node){ + + for (int i = 0; i < graph.size(); i++) + { + const GraphNode &graph_node = graph[i]; + cv::Mat image(image_height, image_width, CV_32S, data.data() + graph_node.fg_index * image_width * image_height); + + if (i == current_node) + { cv::Mat image_f; - image.convertTo(image_f, CV_32F, 1./scale); + image.convertTo(image_f, CV_32F, 1. / scale); auto fg_msg = cv_bridge::CvImage(hdr, "32FC1", image_f).toImageMsg(); fg_pub->publish(*fg_msg); } - + pcl::PointXYZI p; - for(int y = 0; y < image.rows; y++){ - for(int x = 0; x < image.cols; x++){ - float disp = ((float)image.at(y, x))/scale; - float depth = baseline*fx/disp; - tf2::Vector3 v((x-cx)*depth/fx, (y-cy)*depth/fy, depth); - tf2::Vector3 v_world = graph_node.tf*v; - p.x = v_world.x(); - p.y = v_world.y(); - p.z = v_world.z(); - p.intensity = graph_node.fg_index; - - if(disp > 0.f && std::isfinite(disp)) - fg_bg_cloud.points.push_back(p); + for (int y = 0; y < image.rows; y++) + { + for (int x = 0; x < image.cols; x++) + { + float disp = ((float)image.at(y, x)) / scale; + float depth = baseline * fx / disp; + tf2::Vector3 v((x - cx) * depth / fx, (y - cy) * depth / fy, depth); + tf2::Vector3 v_world = graph_node.tf * v; + p.x = v_world.x(); + p.y = v_world.y(); + p.z = v_world.z(); + p.intensity = graph_node.fg_index; + + if (disp > 0.f && std::isfinite(disp)) + fg_bg_cloud.points.push_back(p); } } - image = cv::Mat(image_height, image_width, CV_32S, data.data() + graph_node.bg_index*image_width*image_height); - - if(i == current_node){ + image = cv::Mat(image_height, image_width, CV_32S, data.data() + graph_node.bg_index * image_width * image_height); + + if (i == current_node) + { cv::Mat image_f; - image.convertTo(image_f, CV_32F, 1./scale); + image.convertTo(image_f, CV_32F, 1. / scale); auto bg_msg = cv_bridge::CvImage(hdr, "32FC1", image_f).toImageMsg(); bg_pub->publish(*bg_msg); } - - for(int y = 0; y < image.rows; y++){ - for(int x = 0; x < image.cols; x++){ - float disp = ((float)image.at(y, x))/scale; - float depth = baseline*fx/disp; - tf2::Vector3 v((x-cx)*depth/fx, (y-cy)*depth/fy, depth); - tf2::Vector3 v_world = graph_node.tf*v; - p.x = v_world.x(); - p.y = v_world.y(); - p.z = v_world.z(); - p.intensity = 3*graph_nodes + graph_node.bg_index; - - if(disp > 0.f && std::isfinite(disp)) - fg_bg_cloud.points.push_back(p); + + for (int y = 0; y < image.rows; y++) + { + for (int x = 0; x < image.cols; x++) + { + float disp = ((float)image.at(y, x)) / scale; + float depth = baseline * fx / disp; + tf2::Vector3 v((x - cx) * depth / fx, (y - cy) * depth / fy, depth); + tf2::Vector3 v_world = graph_node.tf * v; + p.x = v_world.x(); + p.y = v_world.y(); + p.z = v_world.z(); + p.intensity = 3 * graph_nodes + graph_node.bg_index; + + if (disp > 0.f && std::isfinite(disp)) + fg_bg_cloud.points.push_back(p); } } } graph_markers.overwrite(); - for(int i = 0; i < graph.size(); i++){ - GraphNode& graph_node = graph[i]; + for (int i = 0; i < graph.size(); i++) + { + GraphNode &graph_node = graph[i]; geometry_msgs::msg::Pose pose; pose.position.x = graph_node.tf.getOrigin().x(); pose.position.y = graph_node.tf.getOrigin().y(); pose.position.z = graph_node.tf.getOrigin().z(); tf2::Quaternion rot; rot.setRPY(0, -M_PI_2, 0); - tf2::Quaternion q = graph_node.tf.getRotation()*rot; + tf2::Quaternion q = graph_node.tf.getRotation() * rot; pose.orientation.x = q.x(); pose.orientation.y = q.y(); pose.orientation.z = q.z(); pose.orientation.w = q.w(); - vis::Marker& arrow = graph_markers.add_arrow(target_frame, hdr.stamp, pose); + vis::Marker &arrow = graph_markers.add_arrow(target_frame, hdr.stamp, pose); arrow.set_color(0., 1., 0.); } marker_pub->publish(graph_markers.get_marker_array()); - + sensor_msgs::msg::PointCloud2 output; pcl::toROSMsg(fg_bg_cloud, output); output.header = hdr; @@ -259,69 +314,85 @@ void GLInterface::publish_viz(const std_msgs::msg::Header &hdr, fg_bg_cloud_pub->publish(output); } -void GLInterface::evaluate_trajectories(const airstack_msgs::msg::Odometry& look_ahead, std::vector& trajectory_points, tf2::Transform& look_ahead_to_target_tf){ - if(!gl_inited) +/** + * @brief Generate and evaluate trajectories using GPU + * @param look_ahead Odometry of the look-ahead planning point + * @param trajectory_points Output vector of trajectory points with collision info + * @param look_ahead_to_target_tf Output transform from look-ahead frame to target frame + * + * Executes GPU-based trajectory generation and collision checking: + * 1. Transforms look-ahead position to target frame + * 2. Generates trajectory library using snap dynamics (GPU compute shader) + * 3. Checks all trajectories against all graph nodes for collisions (GPU) + * 4. Returns trajectory points with collision status for each graph node + * + * Trajectory points contain position, velocity, and counts of seen/unseen/collision nodes. + */ +void GLInterface::evaluate_trajectories(const airstack_msgs::msg::Odometry &look_ahead, std::vector &trajectory_points, tf2::Transform &look_ahead_to_target_tf) +{ + if (!gl_inited) return; // transform look ahead airstack_msgs::msg::Odometry look_ahead_odom; - if(!tflib::transform_odometry(tf_buffer, look_ahead, look_ahead_frame, look_ahead_frame, &look_ahead_odom)) + if (!tflib::transform_odometry(tf_buffer, look_ahead, look_ahead_frame, look_ahead_frame, &look_ahead_odom)) return; tf2::Stamped look_ahead_tf; - try{ + try + { geometry_msgs::msg::TransformStamped t; t = tf_buffer->lookupTransform(target_frame, look_ahead_frame, - look_ahead_odom.header.stamp, rclcpp::Duration::from_seconds(0.1)); + look_ahead_odom.header.stamp, rclcpp::Duration::from_seconds(0.1)); tf2::fromMsg(t, look_ahead_tf); } - catch(tf2::TransformException& ex){ + catch (tf2::TransformException &ex) + { RCLCPP_ERROR_STREAM(node->get_logger(), "Transform exception in render_spheres: " << ex.what()); return; } look_ahead_to_target_tf = look_ahead_tf.inverse(); - - glMemoryBarrier(GL_ALL_BARRIER_BITS); + + glMemoryBarrier(GL_ALL_BARRIER_BITS); // trajectory generation glUseProgram(traj_shader); - + glBindBuffer(GL_UNIFORM_BUFFER, common_ubo); - State* ptr = (State*)glMapBufferRange(GL_UNIFORM_BUFFER, 0, sizeof(State), - GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); - + State *ptr = (State *)glMapBufferRange(GL_UNIFORM_BUFFER, 0, sizeof(State), + GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); + *ptr = State(look_ahead_odom); glUnmapBuffer(GL_UNIFORM_BUFFER); - + glBindBufferBase(GL_UNIFORM_BUFFER, 0, common_ubo); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, params_ssbo); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 2, traj_ssbo); - gl_tic(); glDispatchCompute((traj_params.size() + 255) / 256, 1, 1); float traj_gen_elapsed = gl_toc(); static int iteration = 0; iteration++; - //RCLCPP_INFO_STREAM(node->get_logger(), "iteration: " << iteration << " TRAJ GEN TIMING: " << traj_gen_elapsed); + // RCLCPP_INFO_STREAM(node->get_logger(), "iteration: " << iteration << " TRAJ GEN TIMING: " << traj_gen_elapsed); glMemoryBarrier(GL_ALL_BARRIER_BITS); // collision checking glUseProgram(collision_shader); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, traj_ssbo); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 2, transform_ssbo); - + // TODO do this only when one is updated, probably in the function where they get updated // TODO see if mapping a smaller region, ie only the updated mat4, is better glBindBuffer(GL_SHADER_STORAGE_BUFFER, transform_ssbo); - mat4* transform_ptr = (mat4*)glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, - graph_nodes*sizeof(mat4), - GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); - for(int i = 0; i < std::min(graph_nodes, (int)graph.size()); i++) - transform_ptr[graph[i].fg_index/2] = mat4(graph[i].tf.inverse()); + mat4 *transform_ptr = (mat4 *)glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, + graph_nodes * sizeof(mat4), + GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT); + for (int i = 0; i < std::min(graph_nodes, (int)graph.size()); i++) + transform_ptr[graph[i].fg_index / 2] = mat4(graph[i].tf.inverse()); glUnmapBuffer(GL_SHADER_STORAGE_BUFFER); - + mat4 look_ahead_mat4(look_ahead_tf); - glUniformMatrix4fv(glGetUniformLocation(collision_shader, "state_tf"), 1, GL_FALSE, (float*)&look_ahead_mat4); + glUniformMatrix4fv(glGetUniformLocation(collision_shader, "state_tf"), 1, GL_FALSE, (float *)&look_ahead_mat4); glUniform1i(glGetUniformLocation(collision_shader, "graph_nodes"), graph.size()); glBindImageTexture(0, fgFinal, 0, GL_TRUE, 0, GL_READ_WRITE, GL_R32I); @@ -329,32 +400,60 @@ void GLInterface::evaluate_trajectories(const airstack_msgs::msg::Odometry& look gl_tic(); glDispatchCompute((traj_params.size() * get_traj_size() + 255) / 256, 1, 1); float traj_collision_check_elapsed = gl_toc(); - //RCLCPP_INFO_STREAM(node->get_logger(), "TRAJ COLLISION CHECK TIMING: " << traj_collision_check_elapsed); + // RCLCPP_INFO_STREAM(node->get_logger(), "TRAJ COLLISION CHECK TIMING: " << traj_collision_check_elapsed); glMemoryBarrier(GL_ALL_BARRIER_BITS); // trajectory visualization glBindBuffer(GL_SHADER_STORAGE_BUFFER, traj_ssbo); - TrajectoryPoint* output_data = (TrajectoryPoint*)glMapBuffer(GL_SHADER_STORAGE_BUFFER, GL_READ_ONLY); - trajectory_points.resize(traj_params.size()*get_traj_size()); + TrajectoryPoint *output_data = (TrajectoryPoint *)glMapBuffer(GL_SHADER_STORAGE_BUFFER, GL_READ_ONLY); + trajectory_points.resize(traj_params.size() * get_traj_size()); memcpy(trajectory_points.data(), output_data, trajectory_points.size() * sizeof(TrajectoryPoint)); glUnmapBuffer(GL_SHADER_STORAGE_BUFFER); } -int GLInterface::get_traj_size(){ - return ht/dt;// * 5; +/** + * @brief Get the number of trajectory points per trajectory + * @return Number of discrete points along each trajectory + * + * Calculated as horizon time divided by time step. + */ +int GLInterface::get_traj_size() +{ + return ht / dt; // * 5; } - -void GLInterface::check_gl_error(){ + +/** + * @brief Check for OpenGL errors and log to console + * + * Utility function for debugging OpenGL operations. + */ +void GLInterface::check_gl_error() +{ GLenum e = glGetError(); - if(e != GL_NO_ERROR) RCLCPP_INFO(node->get_logger(), "GL error: 0x%x", e); - else RCLCPP_INFO(node->get_logger(), "GL error: ok"); + if (e != GL_NO_ERROR) + RCLCPP_INFO(node->get_logger(), "GL error: 0x%x", e); + else + RCLCPP_INFO(node->get_logger(), "GL error: ok"); } -void GLInterface::gl_tic(){ +/** + * @brief Start GPU timing query + * + * Begins timing of subsequent GPU operations using OpenGL queries. + */ +void GLInterface::gl_tic() +{ glBeginQuery(GL_TIME_ELAPSED, elapsed_query); } - -float GLInterface::gl_toc(){ + +/** + * @brief End GPU timing query and return elapsed time + * @return Elapsed time in milliseconds + * + * Completes timing query and returns GPU execution time. + */ +float GLInterface::gl_toc() +{ glEndQuery(GL_TIME_ELAPSED); GLuint64 elapsed_ns = 0; glGetQueryObjectui64v(elapsed_query, GL_QUERY_RESULT, &elapsed_ns); @@ -362,23 +461,39 @@ float GLInterface::gl_toc(){ return elapsed_ms; } - -void GLInterface::initGL(int original_width, int original_height, int downsampled_width, int downsampled_height){ - if(!glfwInit()) { +/** + * @brief Initialize OpenGL context and GPU resources + * @param original_width Original width of input disparity images + * @param original_height Original height of input disparity images + * @param downsampled_width Downsampled width for processing + * @param downsampled_height Downsampled height for processing + * + * Initializes: + * - OpenGL context (EGL or GLFW) + * - Trajectory library parameters (pitch/yaw combinations) + * - Compute shaders for disparity expansion, trajectory generation, and collision checking + * - GPU textures and buffers for disparity data and trajectories + * - Uniform buffers for camera intrinsics and trajectory parameters + */ +void GLInterface::initGL(int original_width, int original_height, int downsampled_width, int downsampled_height) +{ + if (!glfwInit()) + { static const EGLint configAttribs[] = { - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, - EGL_BLUE_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_RED_SIZE, 8, - EGL_DEPTH_SIZE, 24, - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, - EGL_NONE - }; + EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, + EGL_BLUE_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_RED_SIZE, 8, + EGL_DEPTH_SIZE, 24, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, + EGL_NONE}; static const EGLint pbufferAttribs[] = { - EGL_WIDTH, image_width, - EGL_HEIGHT, image_height, - EGL_NONE, + EGL_WIDTH, + image_width, + EGL_HEIGHT, + image_height, + EGL_NONE, }; EGLDisplay eglDpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); EGLint major, minor; @@ -387,32 +502,35 @@ void GLInterface::initGL(int original_width, int original_height, int downsample EGLConfig eglCfg; eglChooseConfig(eglDpy, configAttribs, &eglCfg, 1, &numConfigs); EGLSurface eglSurf = eglCreatePbufferSurface(eglDpy, eglCfg, - pbufferAttribs); + pbufferAttribs); eglBindAPI(EGL_OPENGL_API); EGLContext eglCtx = eglCreateContext(eglDpy, eglCfg, EGL_NO_CONTEXT, - NULL); + NULL); eglMakeCurrent(eglDpy, eglSurf, eglSurf, eglCtx); - if(!gladLoadGLLoader((GLADloadproc)eglGetProcAddress)) + if (!gladLoadGLLoader((GLADloadproc)eglGetProcAddress)) std::cout << "Failed to initialize GLAD!" << std::endl; } - else{ + else + { glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); window_ = glfwCreateWindow(640, 480, "Offscreen", nullptr, nullptr); glfwMakeContextCurrent(window_); gladLoadGLLoader((GLADloadproc)glfwGetProcAddress); } - - //for(float p = -90.f; p < 90.f + 1.f; p += 5.f){ - //for(float y = 0.f; y < 360.f; y += 5.f){ - for(float p = -30.f; p < 31.f; p += 15.f){ - for(float y = 0.f; y < 360.f; y += 15.f){ - float yaw = y*M_PI/180.f; - float pitch = p*M_PI/180.f; + + // for(float p = -90.f; p < 90.f + 1.f; p += 5.f){ + // for(float y = 0.f; y < 360.f; y += 5.f){ + for (float p = -30.f; p < 31.f; p += 15.f) + { + for (float y = 0.f; y < 360.f; y += 15.f) + { + float yaw = y * M_PI / 180.f; + float pitch = p * M_PI / 180.f; TrajectoryParams params; params.vel_desired[0] = sin(yaw); params.vel_desired[1] = cos(yaw); - params.vel_desired[2] = sin(pitch);//0.f; + params.vel_desired[2] = sin(pitch); // 0.f; params.vel_max = 2.f; traj_params.push_back(params); @@ -434,17 +552,17 @@ void GLInterface::initGL(int original_width, int original_height, int downsample glGetIntegerv(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, &maxInvocations); std::cout << "Max work group count: " - << maxWorkGroupCount[0] << ", " - << maxWorkGroupCount[1] << ", " - << maxWorkGroupCount[2] << std::endl; + << maxWorkGroupCount[0] << ", " + << maxWorkGroupCount[1] << ", " + << maxWorkGroupCount[2] << std::endl; std::cout << "Max work group size: " - << maxWorkGroupSize[0] << ", " - << maxWorkGroupSize[1] << ", " - << maxWorkGroupSize[2] << std::endl; + << maxWorkGroupSize[0] << ", " + << maxWorkGroupSize[1] << ", " + << maxWorkGroupSize[2] << std::endl; std::cout << "Max total invocations per group: " - << maxInvocations << std::endl; + << maxInvocations << std::endl; std::cout << "Renderer: " << glGetString(GL_RENDERER) << std::endl; std::cout << "Vendor: " << glGetString(GL_VENDOR) << std::endl; @@ -453,9 +571,8 @@ void GLInterface::initGL(int original_width, int original_height, int downsample glGenQueries(1, &elapsed_query); - horizProg_ = createComputeShader(ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/disparity_expand_horizontal.cs"); - vertProg_ = createComputeShader(ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/disparity_expand_vertical.cs"); + vertProg_ = createComputeShader(ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/disparity_expand_vertical.cs"); glUseProgram(horizProg_); glUniform1f(glGetUniformLocation(horizProg_, "baseline"), baseline); @@ -484,10 +601,10 @@ void GLInterface::initGL(int original_width, int original_height, int downsample std::string collision_comp_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/collision.cs"; collision_shader = createComputeShader(collision_comp_filename); - + std::string traj_collision_comp_filename = ament_index_cpp::get_package_share_directory("droan_gl") + "/shaders/traj_collision.cs"; traj_collision_shader = createComputeShader(traj_collision_comp_filename); - + glUseProgram(collision_shader); glUniform1f(glGetUniformLocation(collision_shader, "fx"), fx); glUniform1f(glGetUniformLocation(collision_shader, "fy"), fy); @@ -499,7 +616,7 @@ void GLInterface::initGL(int original_width, int original_height, int downsample glUniform1i(glGetUniformLocation(collision_shader, "limit"), traj_params.size() * get_traj_size()); glUniform1f(glGetUniformLocation(collision_shader, "scale"), scale); glUniform1f(glGetUniformLocation(collision_shader, "expansion_radius"), expansion_radius); - + RCLCPP_INFO_STREAM(node->get_logger(), "traj info: " << traj_params.size() << " " << get_traj_size() << " " << dt); glUseProgram(traj_shader); glUniform1i(glGetUniformLocation(traj_shader, "traj_count"), traj_params.size()); @@ -517,34 +634,34 @@ void GLInterface::initGL(int original_width, int original_height, int downsample glGenTextures(1, &fgHoriz); glBindTexture(GL_TEXTURE_2D, fgHoriz); glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32I, image_width, image_height); - + glGenTextures(1, &bgHoriz); glBindTexture(GL_TEXTURE_2D, bgHoriz); glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32I, image_width, image_height); - + glGenTextures(1, &fgFinal); glBindTexture(GL_TEXTURE_2D_ARRAY, fgFinal); glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, GL_R32I, image_width, image_height, total_layers); - + glGenTextures(1, &bgFinal); glBindTexture(GL_TEXTURE_2D, bgFinal); glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32I, image_width, image_height); - + glGenBuffers(1, &common_ubo); glBindBuffer(GL_UNIFORM_BUFFER, common_ubo); glBufferData(GL_UNIFORM_BUFFER, sizeof(CommonInit), nullptr, GL_DYNAMIC_DRAW); glGenBuffers(1, ¶ms_ssbo); glBindBuffer(GL_SHADER_STORAGE_BUFFER, params_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size()*sizeof(TrajectoryParams), traj_params.data(), GL_STATIC_DRAW); + glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size() * sizeof(TrajectoryParams), traj_params.data(), GL_STATIC_DRAW); glGenBuffers(1, &traj_ssbo); glBindBuffer(GL_SHADER_STORAGE_BUFFER, traj_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size()*get_traj_size()*sizeof(TrajectoryPoint), nullptr, GL_DYNAMIC_COPY); - + glBufferData(GL_SHADER_STORAGE_BUFFER, traj_params.size() * get_traj_size() * sizeof(TrajectoryPoint), nullptr, GL_DYNAMIC_COPY); + glGenBuffers(1, &transform_ssbo); glBindBuffer(GL_SHADER_STORAGE_BUFFER, transform_ssbo); - glBufferData(GL_SHADER_STORAGE_BUFFER, graph_nodes*sizeof(mat4), nullptr, GL_DYNAMIC_COPY); + glBufferData(GL_SHADER_STORAGE_BUFFER, graph_nodes * sizeof(mat4), nullptr, GL_DYNAMIC_COPY); glGenBuffers(1, &collision_info_ubo); glBindBuffer(GL_UNIFORM_BUFFER, collision_info_ubo); @@ -553,19 +670,29 @@ void GLInterface::initGL(int original_width, int original_height, int downsample gl_inited = true; } -GLuint GLInterface::createComputeShader(const std::string &file) { +/** + * @brief Compile and link an OpenGL compute shader from file + * @param file Path to compute shader source file + * @return OpenGL program handle + * + * Loads, compiles, and links a compute shader program. Logs any + * compilation or linking errors. + */ +GLuint GLInterface::createComputeShader(const std::string &file) +{ std::ifstream f(file); std::string src((std::istreambuf_iterator(f)), std::istreambuf_iterator()); const char *c = src.c_str(); - + RCLCPP_INFO_STREAM(node->get_logger(), file); - + GLuint s = glCreateShader(GL_COMPUTE_SHADER); glShaderSource(s, 1, &c, nullptr); glCompileShader(s); GLint ok; glGetShaderiv(s, GL_COMPILE_STATUS, &ok); - if (!ok) { + if (!ok) + { char log[1024]; glGetShaderInfoLog(s, 1024, nullptr, log); RCLCPP_ERROR(node->get_logger(), "Shader compile error: %s", log); @@ -576,12 +703,13 @@ GLuint GLInterface::createComputeShader(const std::string &file) { GLint success = 0; glGetProgramiv(p, GL_LINK_STATUS, &success); - if (!success) { + if (!success) + { GLchar info[1024]; glGetProgramInfoLog(p, sizeof(info), NULL, info); std::cerr << "Link failed: " << info << std::endl; } - + glDeleteShader(s); return p; } diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/glad/src/glad.c b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/glad/src/glad.c index 18c5cb1ad..e3f6b6c5d 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/glad/src/glad.c +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/glad/src/glad.c @@ -1,22 +1,22 @@ /* - OpenGL loader generated by glad 0.1.36 on Thu Nov 6 15:37:11 2025. + OpenGL loader generated by glad 0.1.36 on Thu Nov 6 15:37:11 2025. - Language/Generator: C/C++ - Specification: gl - APIs: gl=4.6 - Profile: core - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.6 + Profile: core + Extensions: - Commandline: - --profile="core" --api="gl=4.6" --generator="c" --spec="gl" --extensions="" - Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.6 + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.6" --generator="c" --spec="gl" --extensions="" + Online: + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.6 */ #include @@ -24,7 +24,7 @@ #include #include -static void* get_proc(const char *namez); +static void *get_proc(const char *namez); #if defined(_WIN32) || defined(__CYGWIN__) #ifndef _WINDOWS_ @@ -33,130 +33,139 @@ static void* get_proc(const char *namez); #include static HMODULE libGL; -typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); +typedef void *(APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char *); static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; #ifdef _MSC_VER #ifdef __has_include - #if __has_include() - #define HAVE_WINAPIFAMILY 1 - #endif +#if __has_include() +#define HAVE_WINAPIFAMILY 1 +#endif #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ - #define HAVE_WINAPIFAMILY 1 +#define HAVE_WINAPIFAMILY 1 #endif #endif #ifdef HAVE_WINAPIFAMILY - #include - #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - #define IS_UWP 1 - #endif +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define IS_UWP 1 +#endif #endif -static -int open_gl(void) { +static int open_gl(void) +{ #ifndef IS_UWP - libGL = LoadLibraryW(L"opengl32.dll"); - if(libGL != NULL) { - void (* tmp)(void); - tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); - gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; - return gladGetProcAddressPtr != NULL; - } + libGL = LoadLibraryW(L"opengl32.dll"); + if (libGL != NULL) + { + void (*tmp)(void); + tmp = (void (*)(void))GetProcAddress(libGL, "wglGetProcAddress"); + gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)tmp; + return gladGetProcAddressPtr != NULL; + } #endif - return 0; + return 0; } -static -void close_gl(void) { - if(libGL != NULL) { - FreeLibrary((HMODULE) libGL); - libGL = NULL; - } +static void close_gl(void) +{ + if (libGL != NULL) + { + FreeLibrary((HMODULE)libGL); + libGL = NULL; + } } #else #include -static void* libGL; +static void *libGL; #if !defined(__APPLE__) && !defined(__HAIKU__) -typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); +typedef void *(APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char *); static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; #endif -static -int open_gl(void) { +static int open_gl(void) +{ #ifdef __APPLE__ - static const char *NAMES[] = { - "../Frameworks/OpenGL.framework/OpenGL", - "/Library/Frameworks/OpenGL.framework/OpenGL", - "/System/Library/Frameworks/OpenGL.framework/OpenGL", - "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" - }; + static const char *NAMES[] = { + "../Frameworks/OpenGL.framework/OpenGL", + "/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"}; #else - static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; + static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; #endif - unsigned int index = 0; - for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { - libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); + unsigned int index = 0; + for (index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) + { + libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); - if(libGL != NULL) { + if (libGL != NULL) + { #if defined(__APPLE__) || defined(__HAIKU__) - return 1; + return 1; #else - gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, - "glXGetProcAddressARB"); - return gladGetProcAddressPtr != NULL; + gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, + "glXGetProcAddressARB"); + return gladGetProcAddressPtr != NULL; #endif - } - } + } + } - return 0; + return 0; } -static -void close_gl(void) { - if(libGL != NULL) { - dlclose(libGL); - libGL = NULL; - } +static void close_gl(void) +{ + if (libGL != NULL) + { + dlclose(libGL); + libGL = NULL; + } } #endif -static -void* get_proc(const char *namez) { - void* result = NULL; - if(libGL == NULL) return NULL; +static void *get_proc(const char *namez) +{ + void *result = NULL; + if (libGL == NULL) + return NULL; #if !defined(__APPLE__) && !defined(__HAIKU__) - if(gladGetProcAddressPtr != NULL) { - result = gladGetProcAddressPtr(namez); - } + if (gladGetProcAddressPtr != NULL) + { + result = gladGetProcAddressPtr(namez); + } #endif - if(result == NULL) { + if (result == NULL) + { #if defined(_WIN32) || defined(__CYGWIN__) - result = (void*)GetProcAddress((HMODULE) libGL, namez); + result = (void *)GetProcAddress((HMODULE)libGL, namez); #else - result = dlsym(libGL, namez); + result = dlsym(libGL, namez); #endif - } + } - return result; + return result; } -int gladLoadGL(void) { - int status = 0; +int gladLoadGL(void) +{ + int status = 0; - if(open_gl()) { - status = gladLoadGLLoader(&get_proc); - close_gl(); - } + if (open_gl()) + { + status = gladLoadGLLoader(&get_proc); + close_gl(); + } - return status; + return status; } -struct gladGLversionStruct GLVersion = { 0, 0 }; +struct gladGLversionStruct GLVersion = {0, 0}; #if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) #define _GLAD_IS_SOME_NEW_VERSION 1 @@ -169,91 +178,113 @@ static const char *exts = NULL; static int num_exts_i = 0; static char **exts_i = NULL; -static int get_exts(void) { +static int get_exts(void) +{ #ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { + if (max_loaded_major < 3) + { #endif - exts = (const char *)glGetString(GL_EXTENSIONS); + exts = (const char *)glGetString(GL_EXTENSIONS); #ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; + } + else + { + int index; - num_exts_i = 0; - glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); - if (num_exts_i > 0) { - exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); - } + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) + { + exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); + } - if (exts_i == NULL) { - return 0; - } + if (exts_i == NULL) + { + return 0; + } - for(index = 0; index < num_exts_i; index++) { - const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); - size_t len = strlen(gl_str_tmp); + for (index = 0; index < num_exts_i; index++) + { + const char *gl_str_tmp = (const char *)glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp); - char *local_str = (char*)malloc((len+1) * sizeof(char)); - if(local_str != NULL) { - memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); - } - exts_i[index] = local_str; - } - } + char *local_str = (char *)malloc((len + 1) * sizeof(char)); + if (local_str != NULL) + { + memcpy(local_str, gl_str_tmp, (len + 1) * sizeof(char)); + } + exts_i[index] = local_str; + } + } #endif - return 1; + return 1; } -static void free_exts(void) { - if (exts_i != NULL) { - int index; - for(index = 0; index < num_exts_i; index++) { - free((char *)exts_i[index]); - } - free((void *)exts_i); - exts_i = NULL; - } +static void free_exts(void) +{ + if (exts_i != NULL) + { + int index; + for (index = 0; index < num_exts_i; index++) + { + free((char *)exts_i[index]); + } + free((void *)exts_i); + exts_i = NULL; + } } -static int has_ext(const char *ext) { +static int has_ext(const char *ext) +{ #ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { + if (max_loaded_major < 3) + { #endif - const char *extensions; - const char *loc; - const char *terminator; - extensions = exts; - if(extensions == NULL || ext == NULL) { - return 0; - } + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if (extensions == NULL || ext == NULL) + { + return 0; + } - while(1) { - loc = strstr(extensions, ext); - if(loc == NULL) { - return 0; - } + while (1) + { + loc = strstr(extensions, ext); + if (loc == NULL) + { + return 0; + } - terminator = loc + strlen(ext); - if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { - return 1; - } - extensions = terminator; - } + terminator = loc + strlen(ext); + if ((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) + { + return 1; + } + extensions = terminator; + } #ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; - if(exts_i == NULL) return 0; - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; + } + else + { + int index; + if (exts_i == NULL) + return 0; + for (index = 0; index < num_exts_i; index++) + { + const char *e = exts_i[index]; - if(exts_i[index] != NULL && strcmp(e, ext) == 0) { - return 1; - } - } - } + if (exts_i[index] != NULL && strcmp(e, ext) == 0) + { + return 1; + } + } + } #endif - return 0; + return 0; } int GLAD_GL_VERSION_1_0 = 0; int GLAD_GL_VERSION_1_1 = 0; @@ -973,8 +1004,10 @@ PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; PFNGLWAITSYNCPROC glad_glWaitSync = NULL; -static void load_GL_VERSION_1_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_0) return; +static void load_GL_VERSION_1_0(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_0) + return; glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); glad_glHint = (PFNGLHINTPROC)load("glHint"); @@ -1024,8 +1057,10 @@ static void load_GL_VERSION_1_0(GLADloadproc load) { glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); } -static void load_GL_VERSION_1_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_1) return; +static void load_GL_VERSION_1_1(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_1) + return; glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); @@ -1040,15 +1075,19 @@ static void load_GL_VERSION_1_1(GLADloadproc load) { glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); } -static void load_GL_VERSION_1_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_2) return; +static void load_GL_VERSION_1_2(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_2) + return; glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); } -static void load_GL_VERSION_1_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_3) return; +static void load_GL_VERSION_1_3(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_3) + return; glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); @@ -1059,8 +1098,10 @@ static void load_GL_VERSION_1_3(GLADloadproc load) { glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); } -static void load_GL_VERSION_1_4(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_4) return; +static void load_GL_VERSION_1_4(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_4) + return; glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); @@ -1071,8 +1112,10 @@ static void load_GL_VERSION_1_4(GLADloadproc load) { glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); } -static void load_GL_VERSION_1_5(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_5) return; +static void load_GL_VERSION_1_5(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_1_5) + return; glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); @@ -1093,8 +1136,10 @@ static void load_GL_VERSION_1_5(GLADloadproc load) { glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); } -static void load_GL_VERSION_2_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_0) return; +static void load_GL_VERSION_2_0(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_2_0) + return; glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); @@ -1189,8 +1234,10 @@ static void load_GL_VERSION_2_0(GLADloadproc load) { glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); } -static void load_GL_VERSION_2_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_1) return; +static void load_GL_VERSION_2_1(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_2_1) + return; glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); @@ -1198,8 +1245,10 @@ static void load_GL_VERSION_2_1(GLADloadproc load) { glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); } -static void load_GL_VERSION_3_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_0) return; +static void load_GL_VERSION_3_0(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_3_0) + return; glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); @@ -1285,8 +1334,10 @@ static void load_GL_VERSION_3_0(GLADloadproc load) { glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); } -static void load_GL_VERSION_3_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_1) return; +static void load_GL_VERSION_3_1(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_3_1) + return; glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); @@ -1303,8 +1354,10 @@ static void load_GL_VERSION_3_1(GLADloadproc load) { glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); } -static void load_GL_VERSION_3_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_2) return; +static void load_GL_VERSION_3_2(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_3_2) + return; glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); @@ -1325,8 +1378,10 @@ static void load_GL_VERSION_3_2(GLADloadproc load) { glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); } -static void load_GL_VERSION_3_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_3) return; +static void load_GL_VERSION_3_3(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_3_3) + return; glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); @@ -1386,8 +1441,10 @@ static void load_GL_VERSION_3_3(GLADloadproc load) { glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); } -static void load_GL_VERSION_4_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_0) return; +static void load_GL_VERSION_4_0(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_0) + return; glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); @@ -1435,8 +1492,10 @@ static void load_GL_VERSION_4_0(GLADloadproc load) { glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); } -static void load_GL_VERSION_4_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_1) return; +static void load_GL_VERSION_4_1(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_1) + return; glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); @@ -1527,8 +1586,10 @@ static void load_GL_VERSION_4_1(GLADloadproc load) { glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); } -static void load_GL_VERSION_4_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_2) return; +static void load_GL_VERSION_4_2(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_2) + return; glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); @@ -1542,8 +1603,10 @@ static void load_GL_VERSION_4_2(GLADloadproc load) { glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); } -static void load_GL_VERSION_4_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_3) return; +static void load_GL_VERSION_4_3(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_3) + return; glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); @@ -1589,8 +1652,10 @@ static void load_GL_VERSION_4_3(GLADloadproc load) { glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); } -static void load_GL_VERSION_4_4(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_4) return; +static void load_GL_VERSION_4_4(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_4) + return; glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); @@ -1601,8 +1666,10 @@ static void load_GL_VERSION_4_4(GLADloadproc load) { glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); } -static void load_GL_VERSION_4_5(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_5) return; +static void load_GL_VERSION_4_5(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_5) + return; glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); @@ -1726,56 +1793,65 @@ static void load_GL_VERSION_4_5(GLADloadproc load) { glad_glGetnMinmax = (PFNGLGETNMINMAXPROC)load("glGetnMinmax"); glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); } -static void load_GL_VERSION_4_6(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_6) return; +static void load_GL_VERSION_4_6(GLADloadproc load) +{ + if (!GLAD_GL_VERSION_4_6) + return; glad_glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)load("glSpecializeShader"); glad_glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)load("glMultiDrawArraysIndirectCount"); glad_glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)load("glMultiDrawElementsIndirectCount"); glad_glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)load("glPolygonOffsetClamp"); } -static int find_extensionsGL(void) { - if (!get_exts()) return 0; +static int find_extensionsGL(void) +{ + if (!get_exts()) + return 0; (void)&has_ext; free_exts(); return 1; } -static void find_coreGL(void) { +static void find_coreGL(void) +{ - /* Thank you @elmindreda - * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 - * https://github.com/glfw/glfw/blob/master/src/context.c#L36 - */ - int i, major, minor; + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; - const char* version; - const char* prefixes[] = { - "OpenGL ES-CM ", - "OpenGL ES-CL ", - "OpenGL ES ", - NULL - }; + const char *version; + const char *prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL}; - version = (const char*) glGetString(GL_VERSION); - if (!version) return; + version = (const char *)glGetString(GL_VERSION); + if (!version) + return; - for (i = 0; prefixes[i]; i++) { - const size_t length = strlen(prefixes[i]); - if (strncmp(version, prefixes[i], length) == 0) { - version += length; - break; - } - } + for (i = 0; prefixes[i]; i++) + { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) + { + version += length; + break; + } + } /* PR #18 */ #ifdef _MSC_VER - sscanf_s(version, "%d.%d", &major, &minor); + sscanf_s(version, "%d.%d", &major, &minor); #else - sscanf(version, "%d.%d", &major, &minor); + sscanf(version, "%d.%d", &major, &minor); #endif - GLVersion.major = major; GLVersion.minor = minor; - max_loaded_major = major; max_loaded_minor = minor; + GLVersion.major = major; + GLVersion.minor = minor; + max_loaded_major = major; + max_loaded_minor = minor; GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; @@ -1795,17 +1871,22 @@ static void find_coreGL(void) { GLAD_GL_VERSION_4_4 = (major == 4 && minor >= 4) || major > 4; GLAD_GL_VERSION_4_5 = (major == 4 && minor >= 5) || major > 4; GLAD_GL_VERSION_4_6 = (major == 4 && minor >= 6) || major > 4; - if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 6)) { + if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 6)) + { max_loaded_major = 4; max_loaded_minor = 6; } } -int gladLoadGLLoader(GLADloadproc load) { - GLVersion.major = 0; GLVersion.minor = 0; +int gladLoadGLLoader(GLADloadproc load) +{ + GLVersion.major = 0; + GLVersion.minor = 0; glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - if(glGetString == NULL) return 0; - if(glGetString(GL_VERSION) == NULL) return 0; + if (glGetString == NULL) + return 0; + if (glGetString(GL_VERSION) == NULL) + return 0; find_coreGL(); load_GL_VERSION_1_0(load); load_GL_VERSION_1_1(load); @@ -1827,7 +1908,7 @@ int gladLoadGLLoader(GLADloadproc load) { load_GL_VERSION_4_5(load); load_GL_VERSION_4_6(load); - if (!find_extensionsGL()) return 0; + if (!find_extensionsGL()) + return 0; return GLVersion.major != 0 || GLVersion.minor != 0; } - diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/global_plan.cpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/global_plan.cpp index 52dc41eb7..ac89081fd 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/global_plan.cpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/global_plan.cpp @@ -1,104 +1,174 @@ #include -GlobalPlan::GlobalPlan(rclcpp::Node* node, tf2_ros::Buffer* tf_buffer) - : node(node) - , tf_buffer(tf_buffer){ +/** + * @brief Constructor for GlobalPlan + * @param node Pointer to ROS node for parameter access + * @param tf_buffer Pointer to TF buffer for coordinate transformations + * + * Initializes global plan manager with ROS parameters. + */ +GlobalPlan::GlobalPlan(rclcpp::Node *node, tf2_ros::Buffer *tf_buffer) + : node(node), tf_buffer(tf_buffer) +{ current_global_plan_id = -1; next_global_plan_id = -1; target_frame = airstack::get_param(node, "target_frame", std::string("map")); } -bool GlobalPlan::update_global_plan(){ - if(next_global_plan_id == -1) +/** + * @brief Update internal global plan representation if changed + * @return True if global plan is available, false otherwise + * + * Converts ROS path message to internal trajectory representation + * and transforms to target frame when a new plan is received. + */ +bool GlobalPlan::update_global_plan() +{ + if (next_global_plan_id == -1) return false; - - if(next_global_plan_id != current_global_plan_id){ + + if (next_global_plan_id != current_global_plan_id) + { global_plan = Trajectory(node, path); global_plan = global_plan.to_frame(target_frame, path.header.stamp); current_global_plan_id = next_global_plan_id; } - + return true; } -void GlobalPlan::set_global_plan(const nav_msgs::msg::Path::SharedPtr msg){ +/** + * @brief Set a new global plan from ROS message + * @param msg Path message containing the global plan + * + * Stores the path and triggers update on next access. + */ +void GlobalPlan::set_global_plan(const nav_msgs::msg::Path::SharedPtr msg) +{ path = *msg; next_global_plan_id = current_global_plan_id + 1; } -void GlobalPlan::trim(const airstack_msgs::msg::Odometry& msg){ - if(!update_global_plan()) +/** + * @brief Trim global plan based on current progress + * @param msg Odometry of look-ahead point + * + * Removes portions of the global plan that have already been traversed + * based on the look-ahead position, maintaining only the remaining path ahead. + */ +void GlobalPlan::trim(const airstack_msgs::msg::Odometry &msg) +{ + if (!update_global_plan()) return; - + tf2::Vector3 look_ahead_position = tflib::to_tf(msg.pose.position); bool success = tflib::to_frame(tf_buffer, look_ahead_position, - msg.header.frame_id, global_plan.get_frame_id(), - msg.header.stamp, &look_ahead_position); + msg.header.frame_id, global_plan.get_frame_id(), + msg.header.stamp, &look_ahead_position); global_plan.trim(look_ahead_position); } -std::tuple GlobalPlan::get_distance(float x, float y, float z){ - if(!update_global_plan()) +/** + * @brief Calculate deviation and path distance for a given point + * @param x X coordinate of point in target frame + * @param y Y coordinate of point in target frame + * @param z Z coordinate of point in target frame + * @return Tuple of (deviation from path, distance along path) in meters + * + * Computes: + * - deviation: Euclidean distance from point to closest point on global path + * - path_distance: Arc length along global path to that closest point + * + * Returns (-1, -1) if no valid global plan exists. + */ +std::tuple GlobalPlan::get_distance(float x, float y, float z) +{ + if (!update_global_plan()) return std::make_tuple(-1.f, -1.f); - + tf2::Vector3 p(x, y, z); auto [valid, wp, index, path_distance] = global_plan.get_closest_point(p); - if(!valid) + if (!valid) return std::make_tuple(-1.f, -1.f); return std::make_tuple(wp.position().distance(p), path_distance); } -void GlobalPlan::publish_vis(rclcpp::Publisher::SharedPtr pub){ - if(!update_global_plan()) +/** + * @brief Publish visualization of global plan + * @param pub Publisher for marker array messages + * + * Generates and publishes visualization markers showing the + * current global plan path. + */ +void GlobalPlan::publish_vis(rclcpp::Publisher::SharedPtr pub) +{ + if (!update_global_plan()) return; - + pub->publish(global_plan.get_markers(node->now(), "global_plan", 0, 0, 1)); } -void GlobalPlan::apply_smooth_yaw(airstack_msgs::msg::TrajectoryXYZVYaw &best_traj_msg, const airstack_msgs::msg::Odometry look_ahead){ - bool found_initial_heading = false; - double initial_heading = 0; - try{ - tf2::Stamped transform; - tf_buffer->canTransform(best_traj_msg.header.frame_id, look_ahead.header.frame_id, - look_ahead.header.stamp, rclcpp::Duration::from_seconds(0.1)); - auto transform_msg = tf_buffer->lookupTransform(best_traj_msg.header.frame_id, - look_ahead.header.frame_id, - look_ahead.header.stamp); - tf2::fromMsg(transform_msg, transform); - - transform.setOrigin(tf2::Vector3(0, 0, 0)); // only care about rotation - initial_heading = - tf2::getYaw(transform * tflib::to_tf(look_ahead.pose.orientation)); - - found_initial_heading = true; - } - catch (tf2::TransformException &ex){ - RCLCPP_ERROR(node->get_logger(), "Failed to get transform: %s", ex.what()); - } +/** + * @brief Apply smooth yaw angles to trajectory waypoints + * @param best_traj_msg Trajectory message to modify (modified in-place) + * @param look_ahead Odometry of look-ahead point for initial heading + * + * Computes smooth yaw angles for trajectory waypoints using: + * 1. Initial heading from look-ahead orientation + * 2. Exponential smoothing (alpha=0.1) between consecutive waypoints + * 3. Yaw calculated from velocity direction between waypoints + * + * Ensures smooth heading changes along the trajectory for better tracking. + */ +void GlobalPlan::apply_smooth_yaw(airstack_msgs::msg::TrajectoryXYZVYaw &best_traj_msg, const airstack_msgs::msg::Odometry look_ahead) +{ + bool found_initial_heading = false; + double initial_heading = 0; + try + { + tf2::Stamped transform; + tf_buffer->canTransform(best_traj_msg.header.frame_id, look_ahead.header.frame_id, + look_ahead.header.stamp, rclcpp::Duration::from_seconds(0.1)); + auto transform_msg = tf_buffer->lookupTransform(best_traj_msg.header.frame_id, + look_ahead.header.frame_id, + look_ahead.header.stamp); + tf2::fromMsg(transform_msg, transform); + + transform.setOrigin(tf2::Vector3(0, 0, 0)); // only care about rotation + initial_heading = + tf2::getYaw(transform * tflib::to_tf(look_ahead.pose.orientation)); + + found_initial_heading = true; + } + catch (tf2::TransformException &ex) + { + RCLCPP_ERROR(node->get_logger(), "Failed to get transform: %s", ex.what()); + } - if (found_initial_heading){ - best_traj_msg.waypoints[0].yaw = initial_heading; - double alpha = 0.1; - double sin_yaw_prev = sin(best_traj_msg.waypoints[0].yaw); - double cos_yaw_prev = cos(best_traj_msg.waypoints[0].yaw); + if (found_initial_heading) + { + best_traj_msg.waypoints[0].yaw = initial_heading; + double alpha = 0.1; + double sin_yaw_prev = sin(best_traj_msg.waypoints[0].yaw); + double cos_yaw_prev = cos(best_traj_msg.waypoints[0].yaw); - for (size_t i = 1; i < best_traj_msg.waypoints.size(); i++){ - airstack_msgs::msg::WaypointXYZVYaw wp_prev = best_traj_msg.waypoints[i - 1]; - airstack_msgs::msg::WaypointXYZVYaw &wp_curr = best_traj_msg.waypoints[i]; + for (size_t i = 1; i < best_traj_msg.waypoints.size(); i++) + { + airstack_msgs::msg::WaypointXYZVYaw wp_prev = best_traj_msg.waypoints[i - 1]; + airstack_msgs::msg::WaypointXYZVYaw &wp_curr = best_traj_msg.waypoints[i]; - double yaw = atan2(wp_curr.position.y - wp_prev.position.y, - wp_curr.position.x - wp_prev.position.x); - double cos_yaw = alpha * cos(yaw) + (1 - alpha) * cos_yaw_prev; - double sin_yaw = alpha * sin(yaw) + (1 - alpha) * sin_yaw_prev; - yaw = atan2(sin_yaw, cos_yaw); + double yaw = atan2(wp_curr.position.y - wp_prev.position.y, + wp_curr.position.x - wp_prev.position.x); + double cos_yaw = alpha * cos(yaw) + (1 - alpha) * cos_yaw_prev; + double sin_yaw = alpha * sin(yaw) + (1 - alpha) * sin_yaw_prev; + yaw = atan2(sin_yaw, cos_yaw); - sin_yaw_prev = sin_yaw; - cos_yaw_prev = cos_yaw; + sin_yaw_prev = sin_yaw; + cos_yaw_prev = cos_yaw; - wp_curr.yaw = yaw; - } + wp_curr.yaw = yaw; } } +} diff --git a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/rewind_monitor.cpp b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/rewind_monitor.cpp index cebb0c0d0..8d5560520 100644 --- a/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/rewind_monitor.cpp +++ b/robot/ros_ws/src/autonomy/3_local/b_planners/droan_gl/src/rewind_monitor.cpp @@ -1,15 +1,25 @@ #include -RewindMonitor::RewindMonitor(rclcpp::Node* node) - : node(node){ - +/** + * @brief Constructor for RewindMonitor + * @param node Pointer to ROS node for parameter access and logging + * + * Initializes rewind monitor with ROS parameters for stuck detection: + * - all_in_collision_* parameters for deadlock recovery + * - stationary_* parameters for stuck-in-place detection + * - Text marker configuration for rewind status visualization + */ +RewindMonitor::RewindMonitor(rclcpp::Node *node) + : node(node) +{ + all_in_collision_duration_threshold = airstack::get_param(node, "all_in_collision_duration_threshold", 2.); all_in_collision_rewind_duration = airstack::get_param(node, "all_in_collision_rewind_duration", 6.); stationary_distance_threshold = airstack::get_param(node, "stationary_distance_threshold", 0.5); stationary_history_duration = airstack::get_param(node, "stationary_history_duration", 10.); stationary_rewind_distance = airstack::get_param(node, "stationary_rewind_distance", 10.); stationary_rewind_duration = airstack::get_param(node, "stationary_rewind_duration", 20.); - + min_dt = 0.2; all_in_collision_start_time = -1.f; should_do_stationary_check = true; @@ -25,132 +35,208 @@ RewindMonitor::RewindMonitor(rclcpp::Node* node) rewind_info_marker.color.g = 1.0; rewind_info_marker.color.b = 1.0; rewind_info_marker.color.a = 1.0; - + clear.ns = rewind_info_marker.ns; clear.action = visualization_msgs::msg::Marker::DELETEALL; } -void RewindMonitor::update_odom(const airstack_msgs::msg::Odometry::SharedPtr msg){ +/** + * @brief Update position history with new odometry + * @param msg Odometry message with robot position + * + * Maintains a sliding window of robot positions over time for + * stationary detection. Removes old data outside the history duration + * and adds new positions at the configured minimum time step. + */ +void RewindMonitor::update_odom(const airstack_msgs::msg::Odometry::SharedPtr msg) +{ float time = rclcpp::Time(msg->header.stamp).seconds(); - if(positions.empty() || (time - positions.back().second) >= min_dt){ + if (positions.empty() || (time - positions.back().second) >= min_dt) + { // remove old data bool updated = false; std::pair front; - while(!positions.empty() && (time - positions.front().second) > stationary_history_duration){ + while (!positions.empty() && (time - positions.front().second) > stationary_history_duration) + { front = positions.front(); positions.pop_front(); updated = true; } - if(updated) + if (updated) positions.push_front(front); - + tf2::Vector3 pos(msg->pose.position.x, msg->pose.position.y, msg->pose.position.z); positions.push_back(std::pair(pos, time)); } } -void RewindMonitor::do_stationary_check(bool b){ +/** + * @brief Enable or disable stationary checking + * @param b True to enable stationary checks, false to disable + * + * Allows external control of whether stationary detection should be active. + * Useful for disabling during initialization or specific flight modes. + */ +void RewindMonitor::do_stationary_check(bool b) +{ should_do_stationary_check = b; } -void RewindMonitor::found_trajectory(bool b){ - if(b) +/** + * @brief Update all-in-collision timer based on trajectory availability + * @param b True if collision-free trajectory found, false if all in collision + * + * Starts timing when all trajectories are in collision, resets when + * a valid trajectory is found. Used to trigger rewind after prolonged deadlock. + */ +void RewindMonitor::found_trajectory(bool b) +{ + if (b) all_in_collision_start_time = -1.f; - else if(all_in_collision_start_time < 0.f) + else if (all_in_collision_start_time < 0.f) all_in_collision_start_time = node->get_clock()->now().seconds(); } -void RewindMonitor::trigger_rewind(float duration, float distance){ +/** + * @brief Manually trigger a rewind operation + * @param duration Duration to rewind in seconds (required) + * @param distance Distance to rewind in meters (optional, default -1 = not used) + * + * Initiates a rewind with specified duration and/or distance constraints. + * Rewind ends when either condition is met (whichever comes first). + */ +void RewindMonitor::trigger_rewind(float duration, float distance) +{ rewind = Rewind(); rewind.valid = true; rewind.start_time = node->get_clock()->now().seconds(); - if(!positions.empty()) + if (!positions.empty()) rewind.start_position = positions.back().first; rewind.duration = duration; rewind.distance = distance; } - -bool RewindMonitor::should_rewind(){ +/** + * @brief Check if robot should rewind and update rewind state + * @return True if rewind is active, false otherwise + * + * Monitors two stuck conditions: + * 1. All-in-collision: All trajectories blocked for duration threshold + * 2. Stationary: Robot hasn't moved beyond distance threshold for history duration + * + * Automatically triggers appropriate rewind when conditions are met. + * Updates rewind state based on duration/distance progress. + */ +bool RewindMonitor::should_rewind() +{ float now = node->get_clock()->now().seconds(); - - //RCLCPP_INFO_STREAM(node->get_logger(), "REWIND INFO: " + // RCLCPP_INFO_STREAM(node->get_logger(), "REWIND INFO: " // << (now - all_in_collision_start_time) << " / " << all_in_collision_duration_threshold // << " " << all_in_collision_start_time << " " << now); - if(rewind.valid){ + if (rewind.valid) + { bool valid_before = rewind.valid; bool duration_valid = rewind.duration > 0.f; bool distance_valid = rewind.distance > 0.f; bool duration_ongoing = now - rewind.start_time < rewind.duration; - if(distance_valid){ + if (distance_valid) + { bool distance_ongoing = rewind.start_position.distance(positions.back().first) < rewind.distance; rewind.valid = distance_ongoing && (duration_valid && duration_ongoing); } - else if(duration_valid) + else if (duration_valid) rewind.valid = duration_ongoing; else rewind.valid = false; - - if(valid_before && !rewind.valid){ - if(rewind.distance > 0.f) - positions.clear(); + + if (valid_before && !rewind.valid) + { + if (rewind.distance > 0.f) + positions.clear(); else - all_in_collision_start_time = -1.f; + all_in_collision_start_time = -1.f; } } - else{ - if(all_in_collision_start_time > 0.f && (now - all_in_collision_start_time) > all_in_collision_duration_threshold) + else + { + if (all_in_collision_start_time > 0.f && (now - all_in_collision_start_time) > all_in_collision_duration_threshold) trigger_rewind(all_in_collision_rewind_duration); - else if(should_do_stationary_check && - !positions.empty() && - (positions.back().second - positions.front().second) >= stationary_history_duration){ + else if (should_do_stationary_check && + !positions.empty() && + (positions.back().second - positions.front().second) >= stationary_history_duration) + { bool stationary = true; - const tf2::Vector3& front = positions.front().first; - const tf2::Vector3& back = positions.back().first; - for(int i = 1; i < positions.size()-1; i++){ - const tf2::Vector3& pos = positions[i].first; - if(pos.distance(front) >= stationary_distance_threshold || pos.distance(back) >= stationary_distance_threshold){ - stationary = false; - break; - } + const tf2::Vector3 &front = positions.front().first; + const tf2::Vector3 &back = positions.back().first; + for (int i = 1; i < positions.size() - 1; i++) + { + const tf2::Vector3 &pos = positions[i].first; + if (pos.distance(front) >= stationary_distance_threshold || pos.distance(back) >= stationary_distance_threshold) + { + stationary = false; + break; + } } - if(stationary) - trigger_rewind(stationary_rewind_duration, stationary_rewind_distance); + if (stationary) + trigger_rewind(stationary_rewind_duration, stationary_rewind_distance); } } return rewind.valid; } -void RewindMonitor::clear_history(){ +/** + * @brief Clear all position history and reset rewind state + * + * Resets the rewind monitor to initial state, clearing: + * - Position history for stationary detection + * - Active rewind status + * - All-in-collision timer + */ +void RewindMonitor::clear_history() +{ positions.clear(); rewind.valid = false; all_in_collision_start_time = -1.f; } -void RewindMonitor::publish_vis(rclcpp::Publisher::SharedPtr pub, std::string frame_id){ +/** + * @brief Publish rewind status visualization + * @param pub Publisher for marker array messages + * @param frame_id Frame ID for visualization markers + * + * Publishes text marker showing: + * - Rewind progress (time and/or distance remaining) + * - All-in-collision timer status when not rewinding + * + * Marker appears as floating text near the robot. + */ +void RewindMonitor::publish_vis(rclcpp::Publisher::SharedPtr pub, std::string frame_id) +{ rclcpp::Time now = node->get_clock()->now(); visualization_msgs::msg::MarkerArray marker_array; marker_array.markers.push_back(clear); rewind_info_marker.header.frame_id = frame_id; rewind_info_marker.header.stamp = now; rewind_info_marker.text = ""; - if(rewind.valid){ - if(rewind.duration > 0.f) + if (rewind.valid) + { + if (rewind.duration > 0.f) rewind_info_marker.text += "time: " + std::to_string(now.seconds() - rewind.start_time) + - " / " + std::to_string(rewind.duration); - if(rewind.distance > 0.f && !positions.empty()) + " / " + std::to_string(rewind.duration); + if (rewind.distance > 0.f && !positions.empty()) rewind_info_marker.text += "\ndistance: " + std::to_string(rewind.start_position.distance(positions.back().first)) + - " / " + std::to_string(rewind.distance); + " / " + std::to_string(rewind.distance); } - else{ + else + { rewind_info_marker.text += std::to_string(all_in_collision_start_time) + "\n" + std::to_string(now.seconds() - all_in_collision_start_time); } - - //RCLCPP_INFO_STREAM(node->get_logger(), "vis: " << rewind.valid << " time: " << (rewind.duration > 0.f) << " dist: " << (rewind.distance > 0.f) + + // RCLCPP_INFO_STREAM(node->get_logger(), "vis: " << rewind.valid << " time: " << (rewind.duration > 0.f) << " dist: " << (rewind.distance > 0.f) // << " " << (!positions.empty()) << " text: " << rewind_info_marker.text); marker_array.markers.push_back(rewind_info_marker); - + pub->publish(marker_array); }