Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Game Development
  4. Qt3d RenderStateSet does not works.
Forum Updated to NodeBB v4.3 + New Features

Qt3d RenderStateSet does not works.

Scheduled Pinned Locked Moved Solved Game Development
2 Posts 1 Posters 1.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    DenisSolo
    wrote on last edited by aha_1980
    #1

    Hi! I try to add QRenderState to my Qt3DWindow(i hope they will global for all entity), but it take no effect. Is there any mistake in my code?

        view = new Qt3DExtras::Qt3DWindow();
    	QWidget* wid = QWidget::createWindowContainer(view);
    	QBoxLayout * Lay = new QBoxLayout(QBoxLayout::Down, this);
    	Lay->addWidget(wid);
    	root = new Qt3DCore::QEntity();
    	camera = view->camera();
    
    renderStateSet = new Qt3DRender::QRenderStateSet(view->activeFrameGraph());
    	
    	const auto  lineWidth2 = new Qt3DRender::QLineWidth();
    	lineWidth2->setValue(4.0f);
    	
    	const auto  pointweight = new Qt3DRender::QPointSize();
    	pointweight->setValue(4.0f);
    	
    	const auto cullFront = new Qt3DRender::QCullFace();
    	cullFront->setMode(Qt3DRender::QCullFace::FrontAndBack);
    
    	const auto depthTest = new Qt3DRender::QDepthTest();
    	depthTest->setDepthFunction(Qt3DRender::QDepthTest::LessOrEqual);
    	
    	
    	renderStateSet->addRenderState(depthTest);
    	renderStateSet->addRenderState(lineWidth2);
    	renderStateSet->addRenderState(pointweight);
    	renderStateSet->addRenderState(cullFront);
    
    1 Reply Last reply
    0
    • D Offline
      D Offline
      DenisSolo
      wrote on last edited by DenisSolo
      #2

      I find solution. The structure of entityes must include Layerfilter.

      Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport(view->renderSettings()->activeFrameGraph());//here must be your framegraph
      	auto surselector =new Qt3DRender::QRenderSurfaceSelector(viewport);
      	surselector->setSurface(view);
      	auto layerfilter = new Qt3DRender::QLayerFilter(surselector);
      	auto layer = new Qt3DRender::QLayer(root);//yours root entity
      	layer ->setRecursive(true);
      	Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector(layerfilter);
      	Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers(cameraSelector);
      	clearBuffers->setClearColor(QColor(100.0, 100.0, 100.0));
      	cameraSelector->setCamera(view->camera());
      	clearBuffers->setBuffers(Qt3DRender::QClearBuffers::AllBuffers);
      
      	Qt3DRender::QRenderStateSet* rendstate = new Qt3DRender::QRenderStateSet(clearBuffers);
      	rendstate->setParent(clearBuffers);
      
      	Qt3DRender::QDepthTest* depth = new Qt3DRender::QDepthTest();//Without this nothing will work
      	depth->setDepthFunction(Qt3DRender::QDepthTest::LessOrEqual);
      	rendstate->addRenderState(depth);
      
      	Qt3DRender::QLineWidth* lw = new Qt3DRender::QLineWidth(rendstate);//render state for example
      	lw->setValue(8);
      	rendstate->addRenderState(lw);
      

      " layer " must be adde as component to entity

      1 Reply Last reply
      1

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved