为查找新引擎锯齿严重的问题,在C++端重写了简单DEMO,摸索阶段有点费事,记录下,以免后续需要。
int floatSize = 4;
int shortSize = 2;
int vertexCount = 4;
int byteStride = 7*4;
auto vertexBuffer = VertexBuffer::Builder()
.vertexCount(vertexCount)
.bufferCount(1)
.attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3, 0, byteStride)
//.attribute(VertexAttribute::COLOR, 0, VertexBuffer::AttributeType::UBYTE4, 3*4, byteStride)
// .normalized(VertexAttribute::COLOR)
.attribute(VertexAttribute::TANGENTS, 0, VertexBuffer::AttributeType::FLOAT4, 3*floatSize, byteStride)
// .normalized(VertexAttribute::TANGENTS)
.build(*engine);
float *vertexData = new float[4*3+4*4];
for(int i=0;i<4;i++){
int x=i<2?-1:1;
int z=1;
if(i<1||i>2)
z=-1;
vertexData[i*7+0] = x;
vertexData[i*7+1] = 1;
vertexData[i*7+2] = 5000*z;
vertexData[i*7+3] = 0.0;
vertexData[i*7+4] = 0.7;
vertexData[i*7+5] = 0.7;
vertexData[i*7+6] = 0.0;
}
unsigned short *indexData = new unsigned short[6];
indexData[0]=0;
indexData[1]=1;
indexData[2]=2;
int indexCount = 3;
vertexBuffer->setBufferAt(*engine, 0, VertexBuffer::BufferDescriptor(vertexData, vertexCount * byteStride, nullptr));
auto indexBuffer = IndexBuffer::Builder()
.indexCount(indexCount)
.bufferType(IndexBuffer::IndexType::USHORT)
.build(*engine);
indexBuffer->setBuffer(*engine, IndexBuffer::BufferDescriptor(indexData, indexCount * 2, nullptr));
auto entity = EntityManager::get().create();
RenderableManager::Builder(1)
.boundingBox({{ -1000, -1000, -1000 }, { 1000, 1000, 1000 }})
.material(0, materialInstance)
.geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vertexBuffer, indexBuffer, 0, indexCount)
.culling(false)
.receiveShadows(false)
.castShadows(false)
.build(*engine, laneNode->entity);