 Инициализация происходит при наличии OnPaint<>Nil ссылки на
 Инициализация происходит при наличии OnPaint<>Nil ссылки на Да все с тобой понятно, внимательнее поищи создание контекста. MakeCurrent дословно как переводится?
Модератор: Модераторы
 Инициализация происходит при наличии OnPaint<>Nil ссылки на
 Инициализация происходит при наличии OnPaint<>Nil ссылки на TehnikHarlan писал(а):procedure TForm1.FormCreate(Sender: TObject);
begin
glClearColor(220/255, 220/255, 220/255, 1); //задаю цвет
Alex2013 писал(а):Проверил "пустая процедура" действительно работает . ( Возможно в старой версии DC получали при создании OpenGLContro-а или в программе все-же была рабочая ссылка в OpenGLControl1.OnPaint )
zub писал(а): В OnPaint контрола рисовать то что надо.
 
 zub писал(а):Можно. Если есть понимание как это работает и почему может не работать.
olegy123 писал(а):Можно хардкорно, даже в TThread, без няшных OnPaint
procedure Draw3DModel(OutX,OutY,W,H,T,Ax,Ay,Az: Integer;Var OutBMP:TBitmap );
const  ScrBitmap:TBitmap=nil;
Var  Sx,Sy:Longint;
        hrc:HDC;
procedure Init;
const
 light_diffuse : Array [0..3] of GLfloat = (1.0, 1.0, 1.0, 0.0);
 light_specular : Array [0..3] of GLfloat = (1.0, 1.0, 1.0, 0.0);
 mat_specular : Array [0..3] of GLfloat = (1.0, 1.0, 1.0, 1.0);
 lmodel_ambient : Array [0..3] of GLfloat = (0.0, 0.0, 0.0, 0.0);
 mat_shininess : GLfloat = 50.0;
var
 CanvasHandle:HDC;
 pfd: TPixelFormatDescriptor;
 nPixelFormat: Integer;
 FormatIndex: Integer;
 lFDC: HDC;
 ps : TPaintStruct;
 b:TBitMap;
 begin
if ScrBitmap=nil then begin  ScrBitmap:=TBitmap.Create;
  Sx:=500;Sy:=500; //Speed:=2;
  ScrBitmap.PixelFormat:=pf24bit;ScrBitmap.Canvas.Brush.Color:=0;
  ScrBitmap.SetSize(500,500);
 end;
  lFDC := ScrBitmap.Canvas.Handle;
  FillChar(PFD, SizeOf(PFD), 0);
    With PFD do begin
    nSize := SizeOf(PFD);   nVersion := 1;
    dwFlags := pfd_Draw_to_Bitmap or pfd_Support_OpenGL
    or    PFD_GENERIC_ACCELERATED;
    iPixelType := pfd_Type_RGBA;
    cColorBits := 24;    cDepthBits := 32;
    iLayerType := pfd_Main_Plane;
    end;
  FormatIndex := ChoosePixelFormat(lFDC, @PFD);
  SetPixelFormat(lFDC, FormatIndex, @PFD);
  HRC := wglCreateContext(lFDC);
  wglMakeCurrent(lFDC, HRC);
glEnable(GL_DEPTH_TEST);
glLightfv(GL_LIGHT0, GL_DIFFUSE, @light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, @light_specular);
glEnable(GL_COLOR_MATERIAL);
 glEnable(GL_LIGHT0);
 glEnable(GL_LIGHTING);
 glColor3f(1.5, 1.5, 1.5);
 glViewport(0, 0, ScrBitmap.Width, ScrBitmap.Height);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity;
 glFrustum(-1.0, 1.0, -1.0, 1.0, 50.0, 300.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity;
 glTranslatef(-50.0, -50.0, -250.0);
end;
procedure WMPaint;
var
 ps : TPaintStruct;
 b:TBitMap;
 MM:Real;
begin
Init; //Инициализация битмапа
// Стандартная настройка OpenGL (Обычный OpenGL код )
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
//... У меня там куча тестового и закомментированного кода так что "замну для ясности"  
// Тут идет "универсальная" загрузка модели  
  Load3e.OGL_DrawLoad3e(0,0,100,nil);
//----------------------------------------------------
   glPopMatrix;
   glFlush;// вместо  SwapBuferrs
   wglDeleteContext(hrc);
 end;
var B,buf,buf2:TBitMap;
begin
 WMPaint;
B:= ScrBitmap;
....
end;
приходится сейчас работать с машинным зрением

По моему достаточно близкая тема что-бы прорабатывать как-то скооперироваться. Как идея ?
Alex2013 писал(а):Хм, причем тут поток ? Просто можно инициализировать API-OpenGL в обход OpenGLControl (Что я и делаю при "выводе на битмап" )
TehnikHarlan писал(а):Я под виндовс 10, через cmd запустилось да и все) ниче не написало. Кстате принесенное откомпилированое тестовое приложение с нового компа на старий, заработало на старом) Может не хватает каких то компонентов для свежоустановленого вин 10 на новом компютере?)

zub писал(а):olegy123, Alex2013
У человека элементарная проблема и ему нужно простое и правильное решение.
olegy123 писал(а):Отдельном потоке фризы можно свести к нулю и фопсы увеличить за 1000, c WM_PAINT таких кулс не реалити.
Pavia писал(а):Именно так. Надо поставить DirectX.
TehnikHarlan писал(а):По моему достаточно близкая тема что-бы прорабатывать как-то скооперироваться. Как идея ?
Спасибо за предложение, запомню) Но не в ближайшем будущем, у меня тут свой армагедон надолго, да и я не особо по програмной части таких проектов. Моя работа заключается в разработке электронных устройств.

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1