void GLEcgCanvas::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.begin(this); painter.setRenderHint(QPainter::Antialiasing); painter.fillRect(event->rect(), QBrush(Qt::white)); painter.end(); drawGridLines(10, QColor(255, 192, 192)); drawGridLines(50, QColor(240, 128, 128)); drawSignal(QColor(0, 0, 0)); }
void SceneWhiteNote::draw() { ofBackground(255, 255, 255); ofSetLineWidth(1); // draw waves ofSetColor(0); ofNoFill(); for (int i = 0; i < NUM_SAMPLES; i++) { mSamplePointsDrawer->drawWave(mSamples[i], ofRectangle(0, 0, ofGetWidth(), ofGetHeight())); } cameraBegin(); //------------------------ camera begin //grid lines drawGridLines(); // draw points ofFill(); ofSetColor(0); // mSamplePointsDrawer->drawCircle(mPts[0], 0.3); mSamplePointsDrawer->drawPoints(mPts[0], ofColor(0), 2); // ofSetColor(255, 0, 0); // mSamplePointsDrawer->drawCircle(mPts[1], 0.3); // mSamplePointsDrawer->drawCircle(mPts[2], 0.3); // mSamplePointsDrawer->setTo2dMode(BaseScopeManager::TO2D_XZ); // mSamplePointsDrawer->set2dDistance(-75); cameraEnd(); //--------------------------- camera end //ruler lines drawRulerLines(); }
void TerrainGridRenderable::initTerrainGrid(int vertexCount) { m_locked_data = 0; mRenderOp.vertexData = new Ogre::VertexData(); mRenderOp.indexData = 0; mRenderOp.vertexData->vertexCount = mVertexCount; mRenderOp.vertexData->vertexStart = 0; mRenderOp.operationType = Ogre::RenderOperation::OT_LINE_LIST; mRenderOp.useIndexes = false; Ogre::VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration; Ogre::VertexBufferBinding* bind = mRenderOp.vertexData->vertexBufferBinding; decl->addElement(0, 0, Ogre::VET_FLOAT3, Ogre::VES_POSITION); decl->addElement(0, 3*sizeof(Ogre::Real), Ogre::VET_COLOUR, Ogre::VES_DIFFUSE); Ogre::HardwareVertexBufferSharedPtr vbuf = Ogre::HardwareBufferManager::getSingleton().createVertexBuffer( decl->getVertexSize(0), vertexCount, Ogre::HardwareBuffer::HBU_WRITE_ONLY); bind->setBinding(0, vbuf); // set basic white material this->setMaterial("BaseWhiteNoLighting"); mBox.setExtents(-10,-10,-10,10,10,10); lock(); drawGridLines(); unlock(); // getMaterial()->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); setQueryFlags(0); }
void TerrainGridRenderable::onTerrainHeightChanged(const std::vector<TerrainInfo>& terrainInfo,int minx,int minz,int maxx,int maxz) { /*minx = std::max(mXStart,minx); minz = std::max(mZStart,minz); maxx = std::min(maxx,mXEnd); maxz = std::min(maxz,mZEnd); lock(); int lineCount = ((minz-mZStart) * (mZEnd - mZStart) + (minx-mXStart)) ; for(int z=minz;z<maxz+1;z++) { for(int x=minx;x<maxx;x++) { Ogre::Vector3 startPt = terrData->_getPosition(x,z); Ogre::Vector3 endPt = terrData->_getPosition(x+1,z); startPt.y +=1; endPt.y +=1; if(z%10 == 0) mColorValue = colourRed; else mColorValue = colourWhite; if (z == 2 || z == 62) mColorValue = colourGreen; drawLine(startPt,endPt,mColorValue,mColorValue,lineCount++); } lineCount += (mXEnd - mXStart) - (maxx-minx); } lineCount = ((minx-mXStart) * (mZEnd - mZStart) + (minz-mZStart)) + (mXEnd - mXStart) * (mZEnd - mZStart+1); for(int x=minx;x<maxx+1;x++) { for(int z=minz;z<maxz;z++) { Ogre::Vector3 startPt = terrData->_getPosition(x,z); Ogre::Vector3 endPt = terrData->_getPosition(x,z+1); startPt.y +=1; endPt.y +=1; if(x%10 == 0) mColorValue = colourRed; else mColorValue = colourWhite; if (x == 2 || x == 62) mColorValue = colourGreen; drawLine(startPt,endPt,mColorValue,mColorValue,lineCount++); } lineCount += (mZEnd - mZStart) - (maxz-minz); } unlock();*/ /** hack的代码,临时修改了reshape后地形网格线的bug 现在是每次改变地形高度都会重新填充整块地形网格线,效率有点低 */ lock(); drawGridLines(); unlock(); }