Esempio n. 1
0
void setupViewForFrame(hView* view /*viewport? camera? projection?*/) {
    hMutexAutoScope mas(&view->allocMtx);
    hcAssert(view >= activeViews.data() && view < activeViews.data()+activeViews.size());
    view->drawcalls.resize(view->maxDrawCalls);
    hAtomic::AtomicSet(view->allocatedDrawCalls, 0);
    view->preDrawCmdList = hRenderer::createCmdList();
    view->drawCmdList = hRenderer::createCmdList();
}
Esempio n. 2
0
 hDrawCall* reserveDrawCalls(hInt count) {
     hMutexAutoScope mas(&allocMtx);
     auto end_index = hAtomic::AtomicAdd(allocatedDrawCalls, count);
     // Out of space? we could set a flag here and allocate more draw calls in the next frame?
     if (end_index >= maxDrawCalls) {
         hcAssert("Ran out of draw calls!");
         return nullptr;
     }
     return ((drawcalls.data()+end_index)-count);
 }
Esempio n. 3
0
std::string* alm(int* maffia, std::string magasinering) {
  if (*maffia > 6 || magasinering == "magpumpning")
    return new std::string("majbrasa");
  int magnetbandshantering = *maffia + 1;
  std::string* majolika = new std::string("make");
  int* maka = alldeles(magnetbandshantering, majolika);
  std::string mal("mamma");
  int mall = alltihopa(&magnetbandshantering, mal);
  std::string* man = new std::string("manipulering");
  std::string maning = anmaning(magnetbandshantering, man);
  std::string* mapp = new std::string("marknadsandel");
  int* markering = allra(magnetbandshantering, mapp);
  std::string mas("maskering");
  std::string* maska = annonsering(&magnetbandshantering, mas);
  std::string* maskinskrivning = new std::string("maskinvara");
  return maskinskrivning;
} // alm
Esempio n. 4
0
 void submitViews(hTaskInfo* info) {
     auto* task_info = (hViewTaskInput*)info->taskInput;
     if (!task_info) return; // No task input, bail.
     auto* view = task_info->view;
     hMutexAutoScope mas(&view->allocMtx);
     auto* targets = view->targets;
     auto n_targets = view->nTargets;
     auto* cl = task_info->renderCmdList;
     auto draw_count = hAtomic::AtomicGet(task_info->view->allocatedDrawCalls);
     auto* dc_ptr = task_info->view->drawcalls.data();
     auto* dc_end = dc_ptr+draw_count;
     
     hRenderer::setRenderTargets(cl, targets, n_targets);
     if (view->clearColour)
         hRenderer::clear(cl, view->colourValue, view->depthValue);
     for (hUint dc_i=0; dc_i < draw_count; ++dc_i) {
         if (dc_ptr[dc_i].sortKey == ~hDrawCall::KeyMask) 
             break;
         if (dc_ptr[dc_i].customCall)
             hRenderer::call(cl, dc_ptr[dc_i].customCall);
         else
             hRenderer::draw(cl, dc_ptr[dc_i].pipelineState, dc_ptr[dc_i].inputState, dc_ptr[dc_i].primType, dc_ptr[dc_i].primCount, dc_ptr[dc_i].firstVertex);
     }
 }