Ejemplo n.º 1
0
std::ostream& MatrixNec::print(std::ostream& ostrim) const
{
	int** temp = _data;
	ostrim << "MatrixNec(";
	if (temp == nullptr || _nCol == 0 || _nRow == 0)
	{
		ostrim << "null)";
		return ostrim;
	}
	for (ptrdiff_t i = 0; i < _nRow; i++)
	{
		if (i > 0)
		{
			ostrim << "          ";
		}
		ostrim << getIndexArray(i, 0);
		for (ptrdiff_t j = 1; j < _nCol; j++)
		{
			ostrim << ", " << getIndexArray(i, j);
		}
		if (i != _nRow - 1)
		{
			ostrim << "\n";
		}
	}
	ostrim << ")";
	return ostrim;
}
Ejemplo n.º 2
0
void Scene3D::initializeGL()
{
    // цвет для очистки буфера изображения - фон окна
    qglClearColor(Qt::white);
    glEnable(GL_DEPTH_TEST);  // устанавливает режим проверки глубины пикселей
    glShadeModel(GL_FLAT);    // отключает режим сглаживания цветов

    getVertexArray();
    getColorArray();
    getIndexArray();

    glEnableClientState(GL_VERTEX_ARRAY); // активизация массива вершин
    glEnableClientState(GL_COLOR_ARRAY);  // активизация массива цветов вершин
}
Ejemplo n.º 3
0
void Scene3D::set_figure(figure* f) {
    if (f->get_base_type_to_QStr() != INCORECT
            && f->get_base_type_to_QStr() != UNCONVEX
            && (f->get_figure_type_to_QStr() == PIRAMID || f->get_figure_type_to_QStr() ==PRISME)
            && f->get_hight_to_int() && f->get_base_size() > 2)
        cur_figure = f;
    else
        return;
    qglClearColor(back_grount_color);
    getVertexArray();
    getColorArray();
    getIndexArray();
    updateGL();
}
Ejemplo n.º 4
0
static int echoDeclareVtab(
  echo_vtab *pVtab, 
  sqlite3 *db 
){
  int rc = SQLITE_OK;

  if( pVtab->zTableName ){
    sqlite3_stmt *pStmt = 0;
    rc = sqlite3_prepare(db, 
        "SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?",
        -1, &pStmt, 0);
    if( rc==SQLITE_OK ){
      sqlite3_bind_text(pStmt, 1, pVtab->zTableName, -1, 0);
      if( sqlite3_step(pStmt)==SQLITE_ROW ){
        int rc2;
        const char *zCreateTable = (const char *)sqlite3_column_text(pStmt, 0);
        rc = sqlite3_declare_vtab(db, zCreateTable);
        rc2 = sqlite3_finalize(pStmt);
        if( rc==SQLITE_OK ){
          rc = rc2;
        }
      } else {
        rc = sqlite3_finalize(pStmt);
        if( rc==SQLITE_OK ){ 
          rc = SQLITE_ERROR;
        }
      }
      if( rc==SQLITE_OK ){
        rc = getColumnNames(db, pVtab->zTableName, &pVtab->aCol, &pVtab->nCol);
      }
      if( rc==SQLITE_OK ){
        rc = getIndexArray(db, pVtab->zTableName, pVtab->nCol, &pVtab->aIndex);
      }
    }
  }

  return rc;
}
Ejemplo n.º 5
0
int& MatrixNec::at(const ptrdiff_t nRow, const ptrdiff_t nCol)
{
	return getIndexArray(nRow, nCol);
}
Ejemplo n.º 6
0
void veTerrainRenderer::render(veNode *node, veRenderableObject *renderableObj, veCamera *camera, unsigned int contextID)
{
    
    auto vao = _vaoBuffer->getData(contextID);
    if (!vao) {
        vao = _vaoBuffer->createData(contextID);
        _needRefresh = true;
    }
    
    auto terrainGrid = static_cast<veTerrainGrid *>(renderableObj);
    if (_needRefresh) {
        glBindVertexArray(vao);
        
        auto vbo = _vboBuffer->getData(contextID);
        if (!vbo){
            vbo = _vboBuffer->createData(contextID);
        }
        glBindBuffer(GL_ARRAY_BUFFER, vbo);
        
        if (!terrainGrid->getVertexArray()->empty())
            glBufferData(GL_ARRAY_BUFFER, terrainGrid->getVertexArray()->size() * sizeof((*terrainGrid->getVertexArray())[0]), terrainGrid->getVertexArray()->buffer(), GL_DYNAMIC_DRAW);
        
        unsigned int stride = terrainGrid->getVertexStride();
        
        unsigned int offsets = 0;
        for (unsigned int i = 0; i < terrainGrid->getVertexAtrributeNum(); ++i) {
            glVertexAttribPointer(i, terrainGrid->getVertexAtrributeSize(i), GL_FLOAT, GL_FALSE, stride, (GLvoid *)(sizeof(GLfloat) * offsets));
            glEnableVertexAttribArray(i);
            offsets += terrainGrid->getVertexAtrributeSize(i);
        }
        
        auto ibo = _iboBuffer->getData(contextID);
        if (!ibo){
            ibo = _iboBuffer->createData(contextID);
        }
        
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
        if (!terrainGrid->getIndexArray()->empty())
            glBufferData(GL_ELEMENT_ARRAY_BUFFER, terrainGrid->getIndexArray()->size() * sizeof((*terrainGrid->getIndexArray())[0]), terrainGrid->getIndexArray()->buffer(), GL_STATIC_DRAW);
        _indicesCount = (GLsizei)terrainGrid->getIndexArray()->size();
        
        _needRefresh = false;
    }

	veRenderCommand rc;
	rc.mask = node->getMask();
	rc.worldMatrix = new veMat4Ptr(node->getNodeToWorldMatrix());
	rc.camera = camera;
	rc.sceneManager = camera->getSceneManager();
	rc.depthInCamera = (camera->viewMatrix() * rc.worldMatrix->value())[2][3];
	rc.renderer = this;
    rc.contextID = contextID;

    auto material = renderableObj->getMaterial();
    for (unsigned int i = 0; i < material->activeTechnique()->getPassNum(); ++i) {
        auto pass = material->activeTechnique()->getPass(i);
        if (camera->getMask() & pass->drawMask()) {
            bool isTransparent = pass->blendFunc() != veBlendFunc::DISABLE ? true : false;
            rc.pass = pass;
            pass->visit(rc);
            if (isTransparent)
                camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_TRANSPARENT, rc);
            else
                camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_ENTITY, rc);
        }
    }

}