RenderState Class

class QSGMaterialShader::RenderState

QSGMaterialShader::updateUniformData() 및 기타 update 유형의 함수를 호출하는 동안 현재 렌더링 상태를 캡슐화합니다. 더 보기...

공용 유형

enum DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll }
flags DirtyStates

공용 함수

QMatrix4x4 combinedMatrix() const
float determinant() const
float devicePixelRatio() const
QRect deviceRect() const
QSGMaterialShader::RenderState::DirtyStates dirtyStates() const
bool isMatrixDirty() const
bool isOpacityDirty() const
QMatrix4x4 modelViewMatrix() const
float opacity() const
QMatrix4x4 projectionMatrix() const
QRhiResourceUpdateBatch *resourceUpdateBatch()
QRhi *rhi()
QByteArray *uniformData()
QRect viewportRect() const

상세 설명

렌더 상태에는 셰이더가 씬 그래프의 현재 상태를 따르기 위해 준수해야 하는 다수의 접근자가 포함되어 있습니다.

멤버 유형 문서

열거형 렌더 스테이트::더티 스테이트
플래그 렌더 스테이트::더티 스테이트

Constant설명
QSGMaterialShader::RenderState::DirtyMatrix0x0001매트릭스가 변경되어 업데이트해야 함을 나타내는 데 사용됩니다.
QSGMaterialShader::RenderState::DirtyOpacity0x0002불투명도가 변경되어 업데이트해야 함을 나타내는 데 사용됩니다.
QSGMaterialShader::RenderState::DirtyCachedMaterialData0x0004캐시된 머티리얼 상태가 변경되어 업데이트해야 함을 나타내는 데 사용됩니다.
QSGMaterialShader::RenderState::DirtyAll0xFFFF모든 것을 업데이트해야 함을 나타내는 데 사용됩니다.

DirtyStates 유형은 QFlags<DirtyState>에 대한 typedef입니다. DirtyState 값의 OR 조합을 저장합니다.

멤버 함수 문서

QMatrix4x4 RenderState::combinedMatrix() const

모델뷰 행렬과 프로젝트 행렬을 결합한 행렬을 반환합니다.

float RenderState::determinant() const

렌더링에 사용할 모델뷰 결정자를 반환합니다.

float RenderState::devicePixelRatio() const

렌더링에 사용할 물리적 픽셀과 디바이스 독립 픽셀 간의 비율을 반환합니다.

QRect RenderState::deviceRect() const

렌더링 중인 표면의 디바이스 직사각형을

QSGMaterialShader::RenderState::DirtyStates RenderState::dirtyStates() const

이 머티리얼로 렌더링된 지오메트리가 현재 렌더링 상태를 따르기 위해 변경된 렌더링 상태와 업데이트가 필요한 렌더링 상태를 반환합니다.

bool RenderState::isMatrixDirty() const

dirtyStates()에 더티 행렬 상태가 포함되어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

bool RenderState::isOpacityDirty() const

dirtyStates()에 더티 불투명도 상태가 포함되어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

QMatrix4x4 RenderState::modelViewMatrix() const

모델 뷰 행렬을 반환합니다.

머티리얼에 RequiresFullMatrix 플래그가 설정되어 있으면 시나리오 그래프에서 계산된 완전한 변환 행렬이 보장됩니다.

그러나 이 플래그가 설정되지 않은 경우 렌더러가 이 행렬을 변경하도록 선택할 수 있습니다. 예를 들어 CPU에서 정점을 미리 변환하고 이 행렬을 동일성으로 설정할 수 있습니다.

위와 같은 상황에서도 머티리얼에 RequiresDeterminant 플래그를 설정하고 determinant() 접근자를 호출하여 실제 행렬 행렬식을 검색할 수 있습니다.

float RenderState::opacity() const

렌더링에 사용할 누적된 불투명도를 반환합니다.

QMatrix4x4 RenderState::projectionMatrix() const

투영 행렬을 반환합니다.

QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()

업로드 및 복사 작업을 대기열에 넣을 수 있는 리소스 업데이트 배치를 반환합니다. 일반적으로 QSGMaterialShader::updateSampledImage()에서 텍스처 이미지 콘텐츠 업데이트를 대기열에 넣을 때 사용합니다.

QRhi *RenderState::rhi()

현재 QRhi 를 반환합니다.

QByteArray *RenderState::uniformData()

셰이더의 균일(상수) 버퍼 데이터에 대한 포인터를 반환합니다. 유니폼 데이터는 QSGMaterialShader::updateUniformData()에서만 업데이트해야 합니다. QSGMaterialShader::updateSampledImage ()와 같이 재구현 가능한 다른 함수에서는 반환값이 null입니다.

참고: 셰이더에서 std140 으로 유니폼 블록을 선언하고 OpenGL 사양의 섹션 7.6.2.2에 설명된 대로 표준 유니폼 블록 레이아웃을 주의 깊게 살펴볼 것을 강력히 권장합니다. 정렬 요구 사항을 고려하여 QByteArray 에서 데이터가 올바른 위치에 배치되도록 하는 것은 QSGMaterialShader 구현에 달려 있습니다. 다른 셰이딩 언어로 번역된 셰이더 코드는 대상 언어가 기본적으로 다른 패킹 규칙을 사용하는 경우에도 블록 멤버에 대해 동일한 오프셋을 사용해야 합니다.

참고: C++ 구조체와 GLSL 유니폼 블록의 레이아웃이 일치하는지 확인되지 않는 한, 여러 멤버를 한 번에 업데이트하기 위해 구조체와 같은 C++ POD 유형에서 복사하지 마세요.

QRect RenderState::viewportRect() const

렌더링 중인 표면의 뷰포트 직사각형을 반환합니다.

© 2025 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.