Приветствую вас товарищи форумчане. Возник вопрос такого рода (приведу сразу код)
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PixelFormat()
{
int nPixelFormat;
TPixelFormatDescriptor pfd;
memset(&pfd,0,sizeof(pfd));
pfd.nVersion = 1;
pfd.dwFlags = PFD_DOUBLEBUFFER+PFD_SUPPORT_OPENGL+
PFD_DRAW_TO_WINDOW;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cAlphaBits = 64;
pfd.cAccumBits = 64;
pfd.cDepthBits = 32;
pfd.cStencilBits = 64;
pfd.iLayerType = PFD_MAIN_PLANE;
nPixelFormat = ChoosePixelFormat(DC,&pfd);
if (nPixelFormat!=0)
SetPixelFormat(DC,nPixelFormat, &pfd);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DC = GetDC(Handle);
PixelFormat();
hrc = wglCreateContext(DC);
wglMakeCurrent(DC, hrc);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Graph()
{
TPaintStruct ps;
BeginPaint(Handle,&ps);
glClearColor(1,0.5,0.5,1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// ???? ???????
if (CheckBox1->Checked)
glEnable(GL_DEPTH_TEST);
// ???? ??????? ?????????????? ????????
glPushMatrix();
glRotated(5,0,1,0);
glColor3f(0,1,0);
glBegin(GL_QUAD_STRIP);
glVertex3f(1.25,1.25,1.0);
glVertex3f(1.25,-1.0,1.0);
glVertex3f(-1.0,1.25,0);
glVertex3f(-1.0,-1.0,0);
glEnd();
glPopMatrix();
glColor3f(1,1,0);
glBegin(GL_QUAD_STRIP);
glVertex3f(1.0,1.0,0);
glVertex3f(1.0,-1.25,0);
glVertex3f(-1.25,1.0,1.0);
glVertex3f(-1.25,-1.25,1.0);
glEnd();
glDisable(GL_DEPTH_TEST);
glFlush();
SwapBuffers(DC);
EndPaint(Handle,&ps);
}
void __fastcall TForm1::FormResize(TObject *Sender)
{
if (WidthHeight)
glOrtho(-2,2,-2*Height/Width, 2*Height/Width, -10,10);
else
glOrtho(-2*Width/Height, 2*Width/Height, -2,2,-10,10);
glViewport(0,0,Width,Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
wglMakeCurrent(0,0);
wglDeleteContext(hrc);
ReleaseDC(Handle,DC);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Graph();
}
Функциями glPushMatrix() и glPopMatrix() я хотел добиться того чтобы одна пластинка вращалась а другая стояла не месте. Но они либо вместе вращаются либо вместе стоят.
Знатоки OpenGL подскажите в чем дело.