Esempio n. 1
0
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();

}
Esempio n. 2
0
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();
	
}
Esempio n. 3
0
//===========================================================================
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);
}
Esempio n. 4
0
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
}