qt_add_custom_brush_shaders
사용자 정의 브러시 셰이더를 생성하여 Qt 리소스 시스템에 추가합니다
이 명령은 Qt6 패키지의 CanvasPainter 컴포넌트에 정의되어 있으며, 다음과 같이 불러올 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)이 명령어는 Qt 6.12에서 도입되었습니다.
개요
qt_add_custom_brush_shaders(target resource_name
FILES file1 [file2 ...]
[PREFIX resource_path]
[BASE base_path]
[OUTPUTS output1 [output2 ...]]
[DEFINES "name1=value1;name2=value2"]
[OUTPUT_TARGETS out_targets_var]
)버전 정보가 없는 명령어가 비활성화된 경우, 대신 ` qt6_add_custom_brush_shaders() `를 사용하십시오. 이 명령어는 본 명령어와 동일한 인자 세트를 지원합니다.
설명
qt_add_custom_brush_shaders 를 사용할 경우, 빌드 시스템은 Qt Canvas Painter 전처리 단계를 호출한 후 자동으로 qsb 도구를 실행하며, 그 결과로 생성된 .qsb 파일들은 암시적으로 리소스 시스템에 추가됩니다. 런타임 시, 애플리케이션은 Qt 리소스 시스템을 통해 생성된 .qsb 파일에 접근하고, 해당 경로를 QCanvasCustomBrush 에 전달합니다.
예시
brush1.frag 에서 구현된 프래그먼트 셰이더를 사용하는 사용자 정의 브러시로 렌더링하려는 애플리케이션이 있다고 가정해 보겠습니다. QCanvasCustomBrush 는 brush1.frag.qsb 을 참조합니다. 빌드 시점에 이 .qsb 파일이 생성되도록 하려면:
find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
qt_add_executable(exampleapp
main.cpp
)
qt_add_custom_brush_shaders(exampleapp "exampleapp_custombrush_shaders"
PREFIX
"/shaders"
FILES
brush1.frag
)위 설정만으로도 애플리케이션이 실행 시점에 :/shaders/brush1.frag.qsb 에 접근할 수 있습니다:
QCanvasCustomBrush customBrush(":/shaders/brush1.frag.qsb");원본 Vulkan 스타일 GLSL 소스 코드(brush1.frag)는 애플리케이션 실행 파일에 포함되지 않으며 배포할 필요도 없습니다. 셰이더 코드에 오류가 있는 경우, 빌드 시 컴파일러 메시지가 출력되고 빌드가 실패합니다. 셰이더 소스 파일을 변경하면 C++ 및 기타 소스 파일과 마찬가지로 다음 빌드에서 변경 사항이 자동으로 반영됩니다.
qt_add_shaders와의 관계
qt_add_custom_brush_shaders 는 ` QCanvasCustomBrush`와 함께 사용되는 셰이더 전용입니다. 이 함수는 빌드 시점에 추가 전처리를 수행한 후, 내부적으로 Qt의 ` Shader Tools ` 모듈에 있는 표준 ` qt_add_shaders() `를 호출합니다.
참고: 사용자 정의 브러시용셰이더는 반드시 ` QC_INCLUDE ` 문을 포함해야 하며, ` "customfrag.glsl" ` 또는 ` "customvert.glsl"` 중 하나를 사용해야 하고, ` qt_add_custom_brush_shaders`를 통해 프로젝트에 추가되어야 합니다. 표준 ` qt_add_shaders ` 함수는 Qt Canvas Painter에 특화된 전처리 작업을 수행하지 않기 때문에 사용자 정의 브러시 셰이더에는 적합하지 않습니다.
Qt에서 크로스 플랫폼 셰이더 코드를 다루는 일반적인 개념에 대해서는 qt_add_shaders() 를, 사용자 정의 브러시 셰이더 제작에 대한 자세한 내용은 QCanvasCustomBrush 를 참조하십시오.
대상 언어
qt_add_custom_brush_shaders 는 셰이더 코드를 Qt Canvas Painter가 지원하는 그래픽 API에 적합한 고정된 대상 집합으로 변환합니다:
- SPIR-V (Vulkan용)
- GLSL
300 es(OpenGL ES 3.0 이상용) - GLSL
150(OpenGL 3.2 및 이후 버전용) - GLSL
130(OpenGL 3.0용, 주로 구형 소프트웨어 OpenGL 래스터라이저 지원용) - HLSL
5.0(Direct 3D용) - MSL
1.2(Metal용)
qt_add_shaders()와 달리, 현재 대상 언어 및 버전 세트에 대해 추가로 구성할 수 있는 옵션은 제공되지 않습니다.
인수
셰이더의 유형은 파일 확장자로 추론되며, 프래그먼트 셰이더의 경우 .frag, 버텍스 셰이더의 경우 .vert 이어야 합니다.
첫 번째와 두 번째 인자는 위치 기반입니다. target 는 생성된 리소스가 추가될 대상이며, resource_name 는 생성된 리소스의 이름입니다. 이 이름은 프로젝트 내의 각 qt_add_custom_brush_shaders 호출에 대해 고유해야 합니다.
참고: 첫 번째 인자로 전달된 target 는 qt_add_custom_brush_shaders 가 호출되기 전에 이미 존재해야 합니다.
참고: qt_add_custom_brush_shaders 호출을여러 번 수행할 수 있으며, 각 호출마다 고유한 resource_name 을 사용해야 합니다.
나머지 인수는 키워드 기반입니다:
FILES- 컴파일할 셰이더 소스 파일(.frag또는.vert) 목록입니다. 이 키워드는 필수입니다.PREFIX- 리소스 시스템에서 생성된.qsb파일을 사용할 수 있도록 하는 리소스 경로 접두사입니다.BASE-qt_add_resources의BASE인자와 유사하게, 생성된 리소스 별칭에서 제거되는 기본 경로입니다.OUTPUTS- 생성된.qsb파일의 이름을 소스 파일과 다르게 지정해야 하는 경우, 이 목록에는FILES의 각 항목에 대한 항목을 포함하여 출력 파일 이름을 지정할 수 있습니다. 이는 일반적으로 하나의 셰이더 소스 파일이DEFINES을 통해 서로 다른 여러.qsb파일의 입력으로 사용될 때 사용됩니다.DEFINES- 셰이더 컴파일 중에 활성화되는 매크로를 정의합니다. 이 목록은"name1=value1;name2=value2"형식을 갖습니다.OUTPUT_TARGETS- 정적 라이브러리와 함께qt_add_custom_brush_shaders를 사용할 경우, 하나 이상의 특수 타깃이 생성됩니다. 여기에서 변수 이름을 전달하여 이러한 타깃을 가져올 수 있으며, 예를 들어 해당 타깃에 대한 추가 처리를 수행하는 데 사용할 수 있습니다.
QCanvasCustomBrush 및 qt_add_shaders()도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.