void Display(void) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); Camera.Render(); glTranslatef(0.0,0.8,0.0); glScalef(3.0,1.0,3.0); GLfloat size = 2.0; GLint LinesX = 30; GLint LinesZ = 30; GLfloat halfsize = size / 2.0; glColor3f(1.0,1.0,1.0); glPushMatrix(); glTranslatef(0.0,-halfsize ,0.0); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glColor3f(0.0,0.0,1.0); glPushMatrix(); glTranslatef(-halfsize,0.0,0.0); glRotatef(90.0,0.0,0.0,halfsize); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,-size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glColor3f(1.0,0.0,0.0); glPushMatrix(); glTranslatef(0.0,0.0,-halfsize); glRotatef(90.0,halfsize,0.0,0.0); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glFlush(); glutSwapBuffers(); }
void DrawSampleScene() { glPushMatrix(); glTranslatef(0.0f,0.0f,z); // Translate Into/Out Of The Screen By z glRotatef(0,1.0f,0.0f,0.0f); // Rotate On The NMS_X Axis By xrot glRotatef(0,0.0f,1.0f,0.0f); // Rotate On The NMS_Y Axis By yrot glBegin(GL_QUADS); // Front Face glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Point 1 (Front) glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Point 2 (Front) glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Front) glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Point 4 (Front) // Back Face glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Back) glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Point 2 (Back) glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Point 3 (Back) glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Point 4 (Back) // Top Face glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Point 1 (Top) glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Point 2 (Top) glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Top) glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Point 4 (Top) // Bottom Face glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Bottom) glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Point 2 (Bottom) glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Point 3 (Bottom) glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Point 4 (Bottom) // Right face glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Point 1 (Right) glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Point 2 (Right) glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Right) glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Point 4 (Right) // Left Face glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Left) glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Point 2 (Left) glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Point 3 (Left) glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Point 4 (Left) glEnd(); glColor3f(.3,.3,.3); glBegin(GL_QUADS); glVertex3f( 0,-1.0, 0); glVertex3f( 0,-1.0,10); glVertex3f(10,-1.0,10); glVertex3f(10,-1.0, 0); glEnd(); glTranslatef(0.0,0.8,0.0); glScalef(30.0,30.0,30.0); GLfloat size = 2.0; GLint LinesX = 30; GLint LinesZ = 30; GLfloat halfsize = size / 2.0; glColor3f(1.0,1.0,1.0); glPushMatrix(); glTranslatef(0.0,-halfsize ,0.0); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glColor3f(0.0,0.0,1.0); glPushMatrix(); glTranslatef(-halfsize,0.0,0.0); glRotatef(90.0,0.0,0.0,halfsize); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,-size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glColor3f(1.0,0.0,0.0); glPushMatrix(); glTranslatef(0.0,0.0,-halfsize); glRotatef(90.0,halfsize,0.0,0.0); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); glFlush(); glPopMatrix(); }
//=========================================================================== void __fastcall CChart::DrawSeriesValues() { Graphics::TCanvas *aCanvas = aaBitmap->Canvas; // ----- Отрисовую Сетку ГРафиков ------ DrawNet(aCanvas); // ----- if ( fCanals != NULL ) { // ----- Если работа в реальном времени, тогда рисуем кривые ---- for ( int i = 0; i < fCanals->ItemsCount; i++ ) { if ( Canals->Items[i]->gr_Checked == false ) continue; aCanvas->Pen->Color = (TColor)0x003300; aCanvas->Polyline(fCanals->Items[i]->gr_Values, fCanals->Items[i]->gr_ValuesCount - 1); if ( isRealTimeWork == true ) LastDrawPoint = fCanals->Items[i]->Count; fCanals->Items[i]->Calculate_gr_Values(false, LastDrawPoint ); aCanvas->Pen->Color = fCanals->Items[i]->gr_Color; aCanvas->Polyline(fCanals->Items[i]->gr_Values, fCanals->Items[i]->gr_ValuesCount - 1); } // --------- Отрисовка курсора ---- if ( isRealTimeWork == false ) { if ( XMousePosition >= DrawRect.Left && XMousePosition <= DrawRect.Right && YMousePosition >= DrawRect.Top && YMousePosition <= DrawRect.Bottom ) { aCanvas->Pen->Color = clWhite; aCanvas->MoveTo(XMousePosition, DrawRect.Top+2); aCanvas->LineTo(XMousePosition, DrawRect.Bottom - 2); AnsiString as1, as2, as_t; bool isTimeValueDrawed = false; int CursorIndex = XMousePosition - DrawRect.Left; double val; SetBkMode(aCanvas->Handle, TRANSPARENT); //aCanvas->Font->Size = 10; aCanvas->Font->Style = TFontStyles() << fsBold; for ( int i = 0; i < Canals->ItemsCount; i++) { if (Canals->Items[i]->Count == 0) continue; if ( CursorIndex >= (int)Canals->Items[i]->Count ) CursorIndex = Canals->Items[i]->Count - 1; if ( CursorIndex < 0 ) CursorIndex = 0; if ( Canals->Items[i]->gr_ValuesCount > 0 ) { if ( CursorIndex >= Canals->Items[i]->gr_ValuesCount ) CursorIndex = Canals->Items[i]->gr_ValuesCount - 1; if ( CursorIndex < 0 ) CursorIndex = 0; val = Canals->Items[i]->Values[Canals->Items[i]->gr_ArrayIndex[CursorIndex]] * Canals->Items[i]->gr_YVoltTransformCoef; as1 = "[V] = " + FloatToStrF(val , ffFixed, 20, 6); as2 = "[G] = " + FloatToStrF(val*9.81, ffFixed, 20, 5); aCanvas->Font->Color = Canals->Items[i]->gr_Color; aCanvas->TextOut(150 + i*100, 10, as1); aCanvas->TextOut(150 + i*100, 27, as2); if ( isTimeValueDrawed == false ) { isTimeValueDrawed = true; // ---- Время курсора ----- as_t = FloatToStrF(Canals->Items[i]->gr_ArrayIndex[CursorIndex] / (double)BaseADC->AcpCanalFreq, ffFixed, 20, 5) + " (c)"; aCanvas->Font->Color = clWhite; aCanvas->TextOut(10, 10, "Время курсора :"); aCanvas->TextOut(10, 27, as_t); } } } } } } // ----- Раскрываем канву --------- pbMain->Canvas->Draw(0, 0, aaBitmap); }
void Display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); //Load a new modelview matrix -> we can apply new transformations //Update the scene: long unsigned int iNowTime = timeGetTime(); float timePassed = float(iNowTime-g_iLastRenderTime)/1000.0f; //divide by 1000 g_ParticleSystem1.UpdateSystem(timePassed); g_ParticleSystem2.UpdateSystem(timePassed); g_ParticleSystem3.UpdateSystem(timePassed); g_ParticleSystem4.UpdateSystem(timePassed); g_ParticleSystem5.UpdateSystem(timePassed); g_ParticleSystem6.UpdateSystem(timePassed); g_iLastRenderTime = iNowTime; //render everything: g_Camera.Render(); //render an opaque quadrangle: (if you want to see how to do this...) /* glEnable(GL_DEPTH_TEST); glDisable(GL_TEXTURE_2D); glColor3f(1.0f,0.0,1.0f); glBegin(GL_POLYGON); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(1.0f,0.0f,0.0f); glVertex3f(1.0f,1.0f,0.0f); glVertex3f(0.0f,1.0f,0.0f); glEnd(); */ //render the nets, so switch off blending and texturing: glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); //enable depth testing (and z-buffer-writing) glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); GLfloat size = 2.0; GLint LinesX = 30; GLint LinesZ = 30; glColor3f(1.0,0.0,0.0); glPushMatrix(); glTranslatef(0.0,0.0 ,0.0); DrawNet(size,LinesX,LinesZ); glTranslatef(0.0,size,0.0); DrawNet(size,LinesX,LinesZ); glPopMatrix(); //Render system 2 first, it's not textured: glEnable(GL_BLEND); glDepthMask(GL_FALSE); glEnable(GL_DEPTH_TEST); //Calculate the point size depending from the camera's distance to the emitter: //(in order to be 100% exact we would have to pass the camera position to the //particles' render function. This method would then have to calculate the point size for each particle!) float zDist = g_Camera.GetPosition().z - g_ParticleSystem2.m_EmitterPosition.z; float xDist = g_Camera.GetPosition().x - g_ParticleSystem2.m_EmitterPosition.x; float CamDistToEmitter = sqrt(SQR(zDist)+SQR(xDist)); if (CamDistToEmitter < 0.2f) //avoid too big particles CamDistToEmitter = 0.2f; glPointSize(1.0f/CamDistToEmitter); g_ParticleSystem2.Render(); //Now enable texturing and render the other particle systems: glEnable(GL_TEXTURE_2D); g_ParticleSystem1.Render(); g_ParticleSystem3.Render(); g_ParticleSystem4.Render(); g_ParticleSystem5.Render(); g_ParticleSystem6.Render(); glDepthMask(GL_TRUE); glFlush(); //Finish rendering glutSwapBuffers(); //Swap the buffers ->make the result of rendering visible }