QCanvasCustomBrush Class
QCanvasCustomBrush는 사용자 정의 셰이더가 있는 브러시입니다. 더 보기...
| 헤더: | #include <QCanvasCustomBrush> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| 이후 | Qt 6.11 |
| 상속합니다: | QCanvasBrush |
| Status: | 기술 미리보기 |
공용 함수
| QCanvasCustomBrush() | |
| QCanvasCustomBrush(const QString &fragmentShader, const QString &vertexShader = {}) | |
| ~QCanvasCustomBrush() | |
| void | setData1(const QVector4D &data) |
| void | setData2(const QVector4D &data) |
| void | setData3(const QVector4D &data) |
| void | setData4(const QVector4D &data) |
| void | setFragmentShader(const QShader &fragmentShader) |
| void | setFragmentShader(const QString &fragmentShader) |
| void | setTimeRunning(bool running) |
| void | setVertexShader(const QShader &vertexShader) |
| void | setVertexShader(const QString &vertexShader) |
| bool | timeRunning() const |
| operator QVariant() const |
관련 비회원
| bool | operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs) |
| bool | operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs) |
상세 설명
QCanvasCustomBrush는 커스텀 버텍스 및/또는 프래그먼트 셰이더가 있는 스트로크/채우기 브러시입니다.
이러한 셰이더는 Qt Quick ShaderEffect 셰이더와 유사하게 Vulkan 스타일의 GLSL로 작성되어야 합니다. 항상 "customfrag.glsl" 또는 "customvert.glsl" 와 함께 QC_INCLUDE 문을 포함해야 합니다. 이렇게 하면 균일한 블록, 이미지 및 글꼴 텍스처, 몇 가지 헬퍼 함수를 사용할 수 있습니다.
아래는 커스텀 조각 셰이더의 간단한 예시입니다:
#version 440 QC_INCLUDE "customfrag.glsl" void main() { float a = 0.6 + 0.2 * sin(0.1 * fragCoord.x + 4.0 * iTime); vec4 color = vec4(a, a, a, 1.0); fragColor = sdfFontAlpha() * globalAlpha * color; applyColorEffects(fragColor); }
iTime 는 내장된 유니폼 블록에서 일반적으로 사용되는 멤버의 예입니다. setTimeRunning ()를 true 으로 호출하면 이 값이 매 프레임마다 자동으로 업데이트되며 애니메이션 콘텐츠를 구동하는 데 사용할 수 있습니다.
QCanvasCustomBrush와 함께 사용되는 셰이더는 항상 Qt 캔버스 페인터 패키지에서 제공하는 qc_add_shaders() CMake 함수를 통해 애플리케이션 프로젝트에 추가해야 합니다. 이 함수는 내부적으로 표준 qt_add_shaders() 을 호출하기 전에 빌드 시점에 추가 전처리를 수행합니다.
예를 들어
qc_add_shaders(app "app_custombrush_shaders" PREFIX "/shaders" FILES brush1.frag )
런타임에 생성된 .qsb 파일은 다음과 같이 사용할 수 있습니다:
QCanvasCustomBrush customBrush(":/shaders/brush1.frag.qsb")); customBrush.setTimeRunning(true); // iTime updates automatically // expose custom data to the shader in data1 customBrush.setData1(QVector4D(1.0, 2.0, 3.0, 4.0));
그런 다음 QCanvasCustomBrush를 채우기 등에 사용할 수 있습니다:
painter->setFillStyle(customBrush);
Qt 캔버스 페인터 - 갤러리 예제를참조하십시오 .
멤버 함수 문서
QCanvasCustomBrush::QCanvasCustomBrush()
기본 사용자 지정 브러시를 구성합니다.
QCanvasCustomBrush::QCanvasCustomBrush(const QString &fragmentShader, const QString &vertexShader = {})
커스텀 브러시를 구성합니다.
조각 셰이더는 fragmentShader 이고 버텍스 셰이더는 vertexShader 입니다. 이 생성자는 두 개의 파일 이름을 받는데, 두 파일 모두 QShader 객체로 읽고 역직렬화되는 .qsb 파일로 예상됩니다. 파일은 로컬 파일일 수도 있고 Qt 리소스 시스템을 통해 애플리케이션에 임베드될 수도 있습니다.
지정하지 않으면 vertexShader 기본값은 빈 문자열이며, 이는 버텍스 스테이지에 기본 표준 셰이더가 사용됨을 의미합니다. 빈 문자열을 fragmentShader 으로 전달하고 vertexShader 에 대한 사용자 정의 셰이더만 제공할 수도 있습니다.
setFragmentShader 및 setVertexShader 을참조하세요 .
[noexcept] QCanvasCustomBrush::~QCanvasCustomBrush()
사용자 지정 브러시를 삭제합니다.
void QCanvasCustomBrush::setData1(const QVector4D &data)
균일 데이터1 값을 data 로 설정하여 셰이더에 사용자 지정 데이터를 설정할 수 있습니다.
void QCanvasCustomBrush::setData2(const QVector4D &data)
균일 데이터2 값을 data 로 설정하여 셰이더에 사용자 지정 데이터를 설정할 수 있습니다.
void QCanvasCustomBrush::setData3(const QVector4D &data)
균일 데이터3 값을 data 로 설정하여 셰이더에 사용자 지정 데이터를 설정할 수 있습니다.
void QCanvasCustomBrush::setData4(const QVector4D &data)
균일 데이터4 값을 data 로 설정하여 셰이더에 사용자 지정 데이터를 설정할 수 있습니다.
void QCanvasCustomBrush::setFragmentShader(const QShader &fragmentShader)
사용자 지정 브러시를 사용하도록 설정합니다 fragmentShader.
void QCanvasCustomBrush::setFragmentShader(const QString &fragmentShader)
사용자 지정 브러시가 fragmentShader 을 사용하도록 설정합니다. 유효한 qsb 파일의 경로여야 합니다. 파일은 로컬 파일일 수도 있고 Qt 리소스 시스템을 통해 애플리케이션에 임베드할 수도 있습니다.
void QCanvasCustomBrush::setTimeRunning(bool running)
시간 실행 상태를 running 로 설정합니다. 이 값이 참이면 셰이더 유니폼 iTime 이 자동으로 업데이트되며 셰이더에서 현재 애니메이션 실행 시간을 가져오는 데 사용할 수 있습니다.
기본값은 false 입니다.
timeRunning()도 참조하세요 .
void QCanvasCustomBrush::setVertexShader(const QShader &vertexShader)
사용자 지정 브러시를 사용하도록 설정합니다 vertexShader.
void QCanvasCustomBrush::setVertexShader(const QString &vertexShader)
사용자 지정 브러시가 vertexShader 을 사용하도록 설정합니다. 유효한 qsb 파일의 경로여야 합니다. 파일은 로컬 파일일 수도 있고 Qt 리소스 시스템을 통해 애플리케이션에 임베드할 수도 있습니다.
bool QCanvasCustomBrush::timeRunning() const
시간이 실행 중이면 참을 반환합니다.
setTimeRunning()도 참조하세요 .
QCanvasCustomBrush::operator QVariant() const
사용자 지정 브러시를 QVariant 로 반환합니다.
관련 비회원
[noexcept] bool operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)
사용자 정의 브러시 lhs 가 rhs 와 다른 경우 true 를 반환하고, 그렇지 않으면 false 을 반환합니다.
operator==()도 참조하세요 .
[noexcept] bool operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)
사용자 정의 브러시 lhs 가 rhs, 그렇지 않으면 false 인 경우 true 를 반환합니다.
operator!=()도 참조하세요 .
© 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.