
Шустрый

Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround
Репутация: нет Всего: нет
|
Возникала такая проблема. Экспортировал .STL файл в код на с++. В коде по точкам построен объект на OpenGL. Перевел код в делфи. Вставил в проект. Вот что вышло. Привожу код экспортикованного в файл обекта и далее куда я его вставил. Код |
procedure gra_function; label m0,m1,start;
var quadObj: GLUquadricObj;
const data1: array [0..3] of double = (+1.000000000e+000,+1.000000000e+000,+1.000000000e+000,+1.000000000e+000); data2: array [0..3] of double = (+1.000000000e+000,+1.000000000e+000,+1.000000000e+000,+1.000000000e+000); data3: array [0..3] of double = (+1.000000000e+000,+1.000000000e+000,+1.000000000e+000,+1.000000000e+000);
begin quadObj := gluNewQuadric; goto start; m0: glNewList(1, GL_COMPILE); glScalef(+1.772968844e-002, +1.772968844e-002, +1.772968844e-002); glTranslatef(-1.119659424e+000, -7.942279816e+000, -3.500000000e+001); glBegin(GL_TRIANGLES); glNormal3f(-4.200000000e+003, -9.100000000e+003, -7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(-8.400000000e+003, +4.550000000e+003, -3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(+4.200000000e+003, +9.100000000e+003, -7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(+4.200000000e+003, +9.100000000e+003, -7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(+8.400000000e+003, -4.550000000e+003, -3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(-4.200000000e+003, -9.100000000e+003, -7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(-8.400000000e+003, -4.550000000e+003, +7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(+4.200000000e+003, -9.100000000e+003, +3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(+8.400000000e+003, +4.550000000e+003, +7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(+8.400000000e+003, +4.550000000e+003, +7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(-4.200000000e+003, +9.100000000e+003, +3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(-8.400000000e+003, -4.550000000e+003, +7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(-4.200000000e+003, -9.100000000e+003, -7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(+8.400000000e+003, -4.550000000e+003, -3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(+4.200000000e+003, -9.100000000e+003, +3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(+4.200000000e+003, -9.100000000e+003, +3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(-8.400000000e+003, -4.550000000e+003, +7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(-4.200000000e+003, -9.100000000e+003, -7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(+8.400000000e+003, -4.550000000e+003, -3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(+4.200000000e+003, +9.100000000e+003, -7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(+8.400000000e+003, +4.550000000e+003, +7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(+8.400000000e+003, +4.550000000e+003, +7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(+4.200000000e+003, -9.100000000e+003, +3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(+8.400000000e+003, -4.550000000e+003, -3.900000000e+003); glVertex3f(+3.361965942e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(+4.200000000e+003, +9.100000000e+003, -7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(-8.400000000e+003, +4.550000000e+003, -3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(-4.200000000e+003, +9.100000000e+003, +3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(-4.200000000e+003, +9.100000000e+003, +3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(+8.400000000e+003, +4.550000000e+003, +7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(+4.200000000e+003, +9.100000000e+003, -7.800000000e+003); glVertex3f(+3.361965942e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(-8.400000000e+003, +4.550000000e+003, -3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +0.000000000e+000); glNormal3f(-4.200000000e+003, -9.100000000e+003, -7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +0.000000000e+000); glNormal3f(-8.400000000e+003, -4.550000000e+003, +7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(-8.400000000e+003, -4.550000000e+003, +7.800000000e+003); glVertex3f(-3.138034058e+001, -2.205772018e+001, +7.000000000e+001); glNormal3f(-4.200000000e+003, +9.100000000e+003, +3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +7.000000000e+001); glNormal3f(-8.400000000e+003, +4.550000000e+003, -3.900000000e+003); glVertex3f(-3.138034058e+001, +3.794227982e+001, +0.000000000e+000); glEnd(); glEndList(); nextStart:=1; m1: glClear(GL_COLOR_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_NORMALIZE); glEnable(GL_DEPTH_TEST); // float data[] = {+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f}; glLightfv(GL_LIGHT1, GL_AMBIENT, @data1);
// float data[] = {+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f}; glLightfv(GL_LIGHT1, GL_DIFFUSE, @data2);
// float data[] = {+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f,+1.000000000e+000f}; glLightfv(GL_LIGHT1, GL_SPECULAR, @data3);
glEnable(GL_LIGHT1); glEnable(GL_LIGHTING); glPushMatrix(); glCallList(1); glPopMatrix();
start: case nextStart of 0: goto m0; 1: goto m1; end; end;
|
На форму кинул кнопку, вот обработчик кнопки Код | .... hrc: HGLRC; dc : HDC; ....
procedure TForm1.Button1Click(Sender: TObject); var ps : TPaintStruct; begin BeginPaint (Panel1.Handle, ps); wglMakeCurrent(dc, hrc); glViewPort (0, 0, Panel1.ClientWidth, Panel1.ClientHeight); glClearColor (0.75, 0.75, 0.5, 1.0); glClear (GL_COLOR_BUFFER_BIT);
glBegin (GL_QUADS); gra_function; glEnd;
SwapBuffers(Panel1.Handle); wglMakeCurrent(0, 0); EndPaint (Panel1.Handle, ps); end;
|
Также есть инициализация Код | procedure TForm1.FormCreate(Sender: TObject); begin dc := GetDC (Panel1.Handle); SetDCPixelFormat(dc); hrc := wglCreateContext(dc); end;
|
После компиляции компбютер зависает так, что сделать ничего нельзя, даже сдвинуть мышь. Буду рад. если кто подскажет, как откомпилировать нормально
|