OpenGL을 공부하려 찾다가 새로운 것을 찾았네요.. 벌컨이라고 OpenGL 다음 버전에 해당되는 API라고 합니다.
위키피아에는 벌칸(Vulkan)을 아래처럼 소개하고 있습니다.
벌컨(Vulkan)은 오버헤드가 적은 크로스 플랫폼 3D 그래픽스 및 컴퓨팅 API이다. 이는 GDC 2015에서 크로노스 그룹에 의해 처음으로 소개되었다.
초기의 Vulkan API는 OpenGL의 차세대 버전으로 준비되었는데, 현재는 "OpenGL" 이라는 이름을 이어가지 않고 Vulkan 이라는 이름으로 결정되었다.
안드로이드 누가(7.0)에서 OpenGL 3.2와 벌칸 1.0을 같이 지원한다고 하니.. 지금 당장 해볼 수는 없을 거 같고.. 그래서 피시쪽을 알아봤더니 그래픽 카드에서 지원만 하면 사용이 가능하다고 하는 군요..
https://vulkan-tutorial.com/Introduction 글 중 중간 아래부분에 그래픽카드사별로 링크가 걸려있습니다.
1차 시도 ... 윈도우 10, intel i3, HD 4600 실패
노트북을 쓰는지라 동작만 하면 좋겠다는 생각에 Intel 링크를 타고 들어갔더니 제가 사용중인 4600이 다행이 있군요.. 사용하는 윈도우 운영체제에 맞는 64비트용 드라이버를 다운로드 받았습니다.
드라이버가 설치된 버전보다 이전 버전이라고 했지만 그냥 설치해봅니다.
다시 깔긴 했는데 제대로 된건지 확인할 방법이 없어 구글링을 해보니 아래 주소에 현재 피시가 벌컨을 지원하는지 여부를 테스트 프로그램이 있네요..
https://github.com/skeeto/vulkan-test
예상과 달리 벌컨 드라이버가 설치안되었다고 에러가 보입니다.
무작정 https://vulkan.lunarg.com/에서 윈도우용 VulKan SDK를 다운로드 받아 설치해봅니다.
시작 메뉴에 추가된 Vulkan SDK 1.0.30.0 하위 항목에 있는 vulkaninfo를 실행시켜봤는데..
현재 컴퓨터에서는 벌칸 드라이버가 제대로 설치안되는 듯합니다.. 다른 피시에서 다시 해봐야 겠습니다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | =========== VULKAN INFO =========== Vulkan API Version: 1.0.30 INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_api_dump.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_core_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_image.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_object_tracker.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_parameter_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_screenshot.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_swapchain.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_threading.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_unique_objects.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\VulkanSDK\1.0.30.0\Bin\VkLayer_vktrace_layer.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file C:\Program Files\RenderDoc\renderdoc.json, version "1.0.0" ERROR: [loader] Code 0 : Registry lookup failed can't get ICD manifest files, do you have a Vulkan driver installed C:\releasebuild\LoaderAndValidationLayers\demos\vulkaninfo.c:682: failed with VK_ERROR_OUT_OF_HOST_MEMORY | cs |
아래 링크에 따르면 6세대 이상의 CPU에서만 지원되는 듯합니다.( 윈도우 드라이버에 한해서 얘기하는듯 합니다.)
https://software.intel.com/en-us/forums/developing-games-and-graphics-on-intel/topic/699818
2차 시도.. Ubuntu 16.04, intel i3, HD 4600 성공
포기 할까 하다가 아래 링크를 발견했습니다. 혹시나 해서 우분투 리눅스로 부팅하여 다시 해봅니다.
https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware
소스코드로 설치하는 방법과 패키지 설치를 지원하고 있는데.. 다행히 우분투도 있군요.. 또하나 지원하는 것은 레드햇입니다. PPA를 이용해서 설치를 했는데 현재는 16.04만 지원하고 14.04는 추후 지원될거 같다고 합니다.
$ sudo apt-add-repository ppa:canonical-x/vulkan
$ sudo apt update
$ sudo apt install vulkan-utils mesa-vulkan-drivers
다시 https://vulkan.lunarg.com/ 으로 가서 이번엔 리눅스용 Vulkan SDK를 다운로드 받아 설치했습니다.
$ chmod +x vulkansdk-linux-x86_64-1.0.30.0.run
$ ./vulkansdk-linux-x86_64-1.0.30.0.run
1 2 3 4 5 | $ cd examples/build $ ./cube WARNING: Haswell Vulkan support is incomplete ../../../../../src/intel/vulkan/anv_device.c:414: FINISHME: Get correct values for VkPhysicalDeviceLimits vulkan: No DRI3 support Could not find both graphics and present queues | cs |
1 2 3 4 5 6 | Section "Device" Identifier "Intel Graphics" Driver "intel" Option "SwapBuffersWait" "0" Option "DRI" "3" EndSection | cs |
1 2 3 | $ pwd /home/webnautes/VulkanSDK/1.0.30.0/examples/build $ ./cube | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #define GLFW_INCLUDE_VULKAN #include <GLFW/glfw3.h> #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE #include <glm/vec4.hpp> #include <glm/mat4x4.hpp> #include <iostream> int main() { glfwInit(); glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr); uint32_t extensionCount = 0; vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr); std::cout << extensionCount << " extensions supported" << std::endl; glm::mat4 matrix; glm::vec4 vec; auto test = matrix * vec; while(!glfwWindowShouldClose(window)) { glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); return 0; } | cs |
makefile이라는 이름으로 다음 내용을 추가해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | VULKAN_SDK_PATH = /home/webnautes/VulkanSDK/1.0.30.0/x86_64 CFLAGS = -std=c++11 -I$(VULKAN_SDK_PATH)/include LDFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lvulkan VulkanTest: main.cpp g++ $(CFLAGS) -o VulkanTest main.cpp $(LDFLAGS) .PHONY: test clean test: VulkanTest LD_LIBRARY_PATH=$(VULKAN_SDK_PATH)/lib VK_LAYER_PATH=$(VULKAN_SDK_PATH)/etc/explicit_layer.d ./VulkanTest clean: rm -f VulkanTest | cs |
make명령으로 컴파일 후.. 실행시켜보면..
$ make
$ ./VulkanTest
일단은 창이 하나뜨는데 화면캡처한거처럼 보이는 군요.. 일단 컴파일 및 실행이 잘되니..
자세한 건 이후에 봐야 겠습니다.
마지막으로 visual studio code에서 컴파일 및 실행시키려면 tasks.json파일 내용을 다음 내용으로 하면됩니다. 아직 vvisual studio code에 익숙하지 못해서 한 줄로 길게 적었지만 ..잘 동작합니다. visual studio code 설치 및 사용법은 아래 링크를 확인하세요..
[리눅스/개발환경] - Ubuntu Linux에 Visual Studio Code 설치해서 C/C++컴파일 해보기
그리고 -I와 -L 다음에 있는 경로만 현재 설치된 경로로 바꿔주세요..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "version": "0.1.0", "command": "bash", "isShellCommand": true, "args": ["-c"], "tasks": [ { "taskName": "saveNcompile", "suppressTaskName": true, "isBuildCommand": true, "args": ["g++ -std=c++11 -I/home/webnautes/VulkanSDK/1.0.30.0/x86_64/include -o main main.cpp -L/home/webnautes/VulkanSDK/1.0.30.0/x86_64/lib `pkg-config --static --libs glfw3` -lvulkan"] }, { "taskName": "execute", "suppressTaskName": true, "isTestCommand": true, "args": ["gnome-terminal -e \"bash -ic ./main;bash \""] } ] } | cs |
참고
https://vulkan-tutorial.com/Development_environment
'OpenGL' 카테고리의 다른 글
OpenGL 강좌 - 삼각형이 회전하는 애니메이션 구현 (0) | 2016.12.20 |
---|---|
OpenGL 강좌 - 정사각형 그리기 (7) | 2016.12.20 |
Ubuntu 16.04에서 OpenGL( freeGLUT ) 프로그래밍 (2) | 2016.11.10 |
OpenGL( freeGLUT ) 을 Visual Studio 2015에 연동하기 (2) | 2016.09.09 |
OpenGL Rendering Pipeline (1) | 2016.07.19 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!