mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 04:18:12 +02:00
can now have colors in buffer
This commit is contained in:
parent
0a7c787109
commit
994f050581
2 changed files with 17 additions and 9 deletions
|
@ -29,16 +29,19 @@ EntityItemPointer RenderableQuadEntityItem::factory(const EntityItemID& entityID
|
||||||
|
|
||||||
RenderableQuadEntityItem::RenderableQuadEntityItem(const EntityItemID& entityItemID, const EntityItemProperties& properties) :
|
RenderableQuadEntityItem::RenderableQuadEntityItem(const EntityItemID& entityItemID, const EntityItemProperties& properties) :
|
||||||
QuadEntityItem(entityItemID, properties) {
|
QuadEntityItem(entityItemID, properties) {
|
||||||
_format.reset(new gpu::Stream::Format());
|
|
||||||
_format->setAttribute(gpu::Stream::POSITION, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0);
|
|
||||||
_numVertices = 0;
|
_numVertices = 0;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gpu::PipelinePointer RenderableQuadEntityItem::_pipeline;
|
gpu::PipelinePointer RenderableQuadEntityItem::_pipeline;
|
||||||
|
gpu::Stream::FormatPointer RenderableQuadEntityItem::_format;
|
||||||
|
|
||||||
void RenderableQuadEntityItem::createPipeline() {
|
void RenderableQuadEntityItem::createPipeline() {
|
||||||
|
static const int COLOR_OFFSET = 12;
|
||||||
|
_format.reset(new gpu::Stream::Format());
|
||||||
|
_format->setAttribute(gpu::Stream::POSITION, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0);
|
||||||
|
_format->setAttribute(gpu::Stream::COLOR, 0, gpu::Element(gpu::VEC4, gpu::UINT8, gpu::RGBA), COLOR_OFFSET);
|
||||||
|
|
||||||
auto VS = DependencyManager::get<DeferredLightingEffect>()->getSimpleVertexShader();
|
auto VS = DependencyManager::get<DeferredLightingEffect>()->getSimpleVertexShader();
|
||||||
auto PS = DependencyManager::get<DeferredLightingEffect>()->getSimplePixelShader();
|
auto PS = DependencyManager::get<DeferredLightingEffect>()->getSimplePixelShader();
|
||||||
gpu::ShaderPointer program = gpu::ShaderPointer(gpu::Shader::createProgram(VS, PS));
|
gpu::ShaderPointer program = gpu::ShaderPointer(gpu::Shader::createProgram(VS, PS));
|
||||||
|
@ -62,14 +65,18 @@ void RenderableQuadEntityItem::updateGeometry() {
|
||||||
}
|
}
|
||||||
// qDebug() << "num points: " << _points.size();
|
// qDebug() << "num points: " << _points.size();
|
||||||
// qDebug() << "num quad vertices" << _quadVertices.size();
|
// qDebug() << "num quad vertices" << _quadVertices.size();
|
||||||
|
int compactColor = ((int(.7 * 255.0f) & 0xFF)) |
|
||||||
|
((int(0.1 * 255.0f) & 0xFF) << 8) |
|
||||||
|
((int(0.9 * 255.0f) & 0xFF) << 16) |
|
||||||
|
((int(1.0 * 255.0f) & 0xFF) << 24);
|
||||||
if (_pointsChanged) {
|
if (_pointsChanged) {
|
||||||
_numVertices = 0;
|
_numVertices = 0;
|
||||||
_verticesBuffer.reset(new gpu::Buffer());
|
_verticesBuffer.reset(new gpu::Buffer());
|
||||||
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(0));
|
// _verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(0));
|
||||||
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(1));
|
// _verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(1));
|
||||||
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(2));
|
// _verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(2));
|
||||||
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(3));
|
// _verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&_quadVertices.at(3));
|
||||||
_numVertices = 4;
|
// _numVertices = 4;
|
||||||
glm::vec3 point, v1;
|
glm::vec3 point, v1;
|
||||||
for (int i = 1; i < _points.size(); i++) {
|
for (int i = 1; i < _points.size(); i++) {
|
||||||
point = _points.at(i);
|
point = _points.at(i);
|
||||||
|
@ -80,6 +87,7 @@ void RenderableQuadEntityItem::updateGeometry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&v1);
|
_verticesBuffer->append(sizeof(glm::vec3), (const gpu::Byte*)&v1);
|
||||||
|
_verticesBuffer->append(sizeof(int), (gpu::Byte*)&compactColor);
|
||||||
_numVertices ++;
|
_numVertices ++;
|
||||||
}
|
}
|
||||||
_pointsChanged = false;
|
_pointsChanged = false;
|
||||||
|
|
|
@ -29,10 +29,10 @@ public:
|
||||||
SIMPLE_RENDERABLE();
|
SIMPLE_RENDERABLE();
|
||||||
|
|
||||||
static gpu::PipelinePointer _pipeline;
|
static gpu::PipelinePointer _pipeline;
|
||||||
|
static gpu::Stream::FormatPointer _format;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void updateGeometry();
|
void updateGeometry();
|
||||||
gpu::Stream::FormatPointer _format;
|
|
||||||
gpu::BufferPointer _verticesBuffer;
|
gpu::BufferPointer _verticesBuffer;
|
||||||
unsigned int _numVertices;
|
unsigned int _numVertices;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue