QMemoryBarrier Class

( Qt3DRender::QMemoryBarrier )

Class to emplace a memory barrier 更多...

头: #include <QMemoryBarrier>
qmake: QT += 3drender
Since: Qt 5.9
实例化: MemoryBarrier
继承: Qt3DRender::QFrameGraphNode

公共类型

enum Operation { None, ElementArray, Uniform, TextureFetch, ..., All }
flags Operations

公共函数

QMemoryBarrier (Qt3DCore::QNode * parent = nullptr)
~QMemoryBarrier ()
Operations waitOperations () const

公共槽

void setWaitOperations (QMemoryBarrier::Operations operations )

信号

void waitOperationsChanged (QMemoryBarrier::Operations barrierTypes )

保护函数

QMemoryBarrier (QMemoryBarrierPrivate & dd , Qt3DCore::QNode * parent = nullptr)

额外继承成员

详细描述

Class to emplace a memory barrier

A Qt3DRender::QMemoryBarrier FrameGraph node is used to emplace a specific memory barrier at a specific time of the rendering. This is required to properly synchronize drawing and compute commands on the GPU.

The barrier defines the ordering of memory operations issued by a prior command. This means that if command1 is manipulating a buffer that is to be used as a vertex attribute buffer in a following command2, then the memory barrier should be placed after command1 and setting the appropriate barrier type for vertex attribute buffer.

QMemoryBarrier node is found in a FrameGraph branch, the barrier will be enforced prior to any draw or compute command even if these are defined deeper in the branch.

For OpenGL rendering, this page gives more info about the Memory Model

成员类型文档编制

enum QMemoryBarrier:: Operation
flags QMemoryBarrier:: Operations

This enum type describes types of buffer to be cleared.

常量
Qt3DRender::QMemoryBarrier::None 0
Qt3DRender::QMemoryBarrier::ElementArray ( 1<<1 )
Qt3DRender::QMemoryBarrier::Uniform ( 1<<2 )
Qt3DRender::QMemoryBarrier::TextureFetch ( 1<<3 )
Qt3DRender::QMemoryBarrier::ShaderImageAccess ( 1<<4 )
Qt3DRender::QMemoryBarrier::Command ( 1<<5 )
Qt3DRender::QMemoryBarrier::PixelBuffer ( 1<<6 )
Qt3DRender::QMemoryBarrier::TextureUpdate ( 1<<7 )
Qt3DRender::QMemoryBarrier::BufferUpdate ( 1<<8 )
Qt3DRender::QMemoryBarrier::FrameBuffer ( 1<<9 )
Qt3DRender::QMemoryBarrier::TransformFeedback ( 1<<10 )
Qt3DRender::QMemoryBarrier::AtomicCounter ( 1<<11 )
Qt3DRender::QMemoryBarrier::ShaderStorage ( 1<<12 )
Qt3DRender::QMemoryBarrier::QueryBuffer ( 1<<13 )
Qt3DRender::QMemoryBarrier::VertexAttributeArray ( 1<<0 )
Qt3DRender::QMemoryBarrier::All 0xFFFFFFFF

The Operations type is a typedef for QFlags <Operation>. It stores an OR combination of Operation values.

成员函数文档编制

QMemoryBarrier:: QMemoryBarrier ( Qt3DCore::QNode * parent = nullptr)

Default constructs an instance of QMemoryBarrier.

[protected] QMemoryBarrier:: QMemoryBarrier ( QMemoryBarrierPrivate & dd , Qt3DCore::QNode * parent = nullptr)

Copy constructor.

QMemoryBarrier:: ~QMemoryBarrier ()

Destroys the instance of QMemoryBarrier.

[slot] void QMemoryBarrier:: setWaitOperations ( QMemoryBarrier::Operations operations )

另请参阅 waitOperations ().

Operations QMemoryBarrier:: waitOperations () const

另请参阅 setWaitOperations ().

[signal] void QMemoryBarrier:: waitOperationsChanged ( QMemoryBarrier::Operations barrierTypes )