AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.11.2006, 09:34   #41  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Dronas Посмотреть сообщение
ну есть оно у меня.

Только там контекст потом не удаляется.
В проекте ошибка:
X++:
#define.GL_COLOR_BUFFER_BIT(4000)
#define.GL_DEPTH_BUFFER_BIT(100)
А надо так
X++:
#define.GL_COLOR_BUFFER_BIT(0x4000)
#define.GL_DEPTH_BUFFER_BIT(0x100)
Проверить не могу, у меня на PixelFormat ругается
Старый 28.11.2006, 11:00   #42  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
В проекте ошибка:
X++:
#define.GL_COLOR_BUFFER_BIT(4000)
#define.GL_DEPTH_BUFFER_BIT(100)
А надо так
X++:
#define.GL_COLOR_BUFFER_BIT(0x4000)
#define.GL_DEPTH_BUFFER_BIT(0x100)
Проверить не могу, у меня на PixelFormat ругается
Без разницы вроде.
Старый 28.11.2006, 11:45   #43  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
OpenGL требует свойства WS_CLIPCHILDREN и WS_CLIPSIBLINGS для окна в Windows
Может в этом косяк?
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 28.11.2006, 13:17   #44  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Точно! Lucky13 - респект! Аксапта - это MDI приложение, следовательно, окно, которое мы получаем, как infolog.hwnd()), это главное окно, наверное и обращение к нему через openGL должно быть соответствующее, но в свое время я работал только с простыми окнами, как то не приходилось делать вывод на главное окно MDI приложения.

Последний раз редактировалось Eldar9x; 28.11.2006 в 17:18.
Старый 28.11.2006, 13:18   #45  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
ну я же делаю не на главное окно!
Старый 28.11.2006, 13:26   #46  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
так тип приложения, а след. и его окон от этого не меняется, проблема скорее всего в том что аксапта это MDI приложение, поэтому ничего и не получается, надо будет в инете поискать как делать вывод на такого рода окна

Последний раз редактировалось Eldar9x; 28.11.2006 в 17:19.
Старый 28.11.2006, 13:30   #47  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
http://www.firststeps.ru/mfc/opengl/r.php?15

Самое забавное, что стиль видимо пофигу какой, потому как я в не MFC приложениях
ставлю совсем другие стили и всё работает.
Старый 28.11.2006, 13:46   #48  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
аксапта, случайно сама на свое окно не выводит, вот прямоугольник тот например?
Старый 28.11.2006, 14:43   #49  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
Так, я создавал контекст ссылаясь на объект window, размещённый на форме.
Старый 28.11.2006, 15:50   #50  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Сообщение от Dronas Посмотреть сообщение
Без разницы вроде.
как это без разницы, 0х4000 это шестнадцатиричное 16384 (возьмите calc )
Старый 28.11.2006, 16:23   #51  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
В смысле работает одинаково
Старый 28.11.2006, 16:36   #52  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
В смысле что:
0х4000 == 16384 дес
4000 дес == 4000 дес

Последний раз редактировалось Eldar9x; 28.11.2006 в 16:45.
Старый 28.11.2006, 16:42   #53  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Dronas, а что у Вас выдает функция GetLastError, если ее вызвать после wglCreateContext?
Старый 28.11.2006, 17:20   #54  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
в последнем сообщении ошибся, может быть причина в том что это MDI приложение, т.е. многооконное, кто как думает?
Старый 28.11.2006, 17:34   #55  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Я пробовал прицепить чужое окно (через FindWindow), результат тот же. Скорее всего окно тут ни причем. У меня упорно твердит, что не может создать контекст из за неверного pixelFormat
Старый 28.11.2006, 17:48   #56  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Lucky13, покажите Ваш код целиком
Старый 28.11.2006, 17:51   #57  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Вот код - никакой ругани, никаких результатов его выполнения ))
X++:
static void Lacky13(Args _args)
{
  HWND mainWindow;
    int dc;
    HWND hrc;
    int  nPixelFormat;
    // Загрузка библиотек
    DLL  opengl32 = new DLL("opengl32.dll");
    DLL  glu32    = new DLL("glu32.dll");
    DLL  gdi32    = new DLL("gdi32.dll");
    DLL  user32   = new DLL("user32");
    //
    COMVariant parm5 = new COMVariant();
    // Получение точек входа функций
    DLLFunction wglCreateContext  = new DLLFunction(opengl32, "wglCreateContext");
    DLLFunction wglMakeCurrent    = new DLLFunction(opengl32, "wglMakeCurrent");
    DLLFunction glEnable          = new DLLFunction(opengl32, "glEnable");
    DLLFunction ChoosePixelFormat = new DLLFunction(gdi32,    "ChoosePixelFormat");
    DLLFunction SetPixelFormat    = new DLLFunction(gdi32,    "SetPixelFormat");
    DLLFunction glMatrixMode      = new DLLFunction(opengl32, "glMatrixMode");
    DLLFunction glLoadIdentity    = new DLLFunction(opengl32, "glLoadIdentity");
    DLLFunction gluPerspective    = new DLLFunction(glu32,    "gluPerspective");
    DLLFunction glClearColor      = new DLLFunction(opengl32, "glClearColor");
        COMVariant parm1 = new COMVariant();
        COMVariant parm2 = new COMVariant();
        COMVariant parm3 = new COMVariant();
        COMVariant parm4 = new COMVariant();
    DLLFunction getWindowDC       = new DLLFunction(user32, "GetWindowDC");
    DLLFunction glClear           = new DLLFunction(opengl32, "glClear");
    //
    Binary  pixelFormatDescriptor;
    //
    boolean fInfo = false;
    void initializeRC()
    {
        glEnable.call(2929);
        glEnable.call(2896);
        glEnable.call(16384);
    }
    ;
    // Установка функций
    wglCreateContext.returns(ExtTypes::DWord);
    wglCreateContext.arg(ExtTypes::DWord);
    wglMakeCurrent.returns(ExtTypes::DWord);
    wglMakeCurrent.arg(ExtTypes::DWord, ExtTypes::DWord);
    glEnable.returns(ExtTypes::void);
    glEnable.arg(ExtTypes::DWord);
    ChoosePixelFormat.returns(ExtTypes::DWord);
    ChoosePixelFormat.arg(ExtTypes::DWord, ExtTypes::Pointer);
    SetPixelFormat.returns(ExtTypes::DWord);
    SetPixelFormat.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer);
    glMatrixMode.returns(ExtTypes::void);
    glMatrixMode.arg(ExtTypes::DWord);
    glLoadIdentity.returns(ExtTypes::void);
    glLoadIdentity.arg();       // возможно нужно добавить
    gluPerspective.returns(ExtTypes::void);
    gluPerspective.arg(ExtTypes::Double, ExtTypes::Double, ExtTypes::Double, ExtTypes::Double);
    glClearColor.returns(ExtTypes::void);
    glClearColor.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord);
    parm1.float(1.0);
    parm2.float(0.0);
    parm3.float(0.0);
    parm4.float(1.0);
    getWindowDC.returns(ExtTypes::DWORD);
    getWindowDC.arg(ExtTypes::DWORD);
    glClear.returns(ExtTypes::void);
    glClear.arg(ExtTypes::DWord);
    //
    mainWindow = infolog.hWnd();
    //parm5.int(mainWindow);
    dc  = getWindowDC.call(mainWindow);
   // dc = WinApi::createDC();
    // Формат пиксела
        pixelFormatDescriptor = new Binary(40);
        pixelFormatDescriptor.Word(0, 40);                // nSize
        pixelFormatDescriptor.Word(2, 1);                 // nVersion
        pixelFormatDescriptor.dWord(4, 4|32|1);//8191);     // dwFlags
        pixelFormatDescriptor.byte(8, 0);                 // iPixelType
        pixelFormatDescriptor.byte(9, 32);                // cColorBits
        pixelFormatDescriptor.byte(10, 8);  // cRedBits;
        pixelFormatDescriptor.byte(11, 8);  // cRedShift;
        pixelFormatDescriptor.byte(12, 8);  // cGreenBits;
        pixelFormatDescriptor.byte(13, 0);  // cGreenShift;
        pixelFormatDescriptor.byte(14, 0);  // cBlueBits;
        pixelFormatDescriptor.byte(15, 0);  // cBlueShift;
        pixelFormatDescriptor.byte(16, 64);  // cAlphaBits;
        pixelFormatDescriptor.byte(17, 16);  // cAlphaShift;
        pixelFormatDescriptor.byte(18, 16);  // cAccumBits;
        pixelFormatDescriptor.byte(19, 16);  // cAccumRedBits;
        pixelFormatDescriptor.byte(20, 0);  // cAccumGreenBits;
        pixelFormatDescriptor.byte(21, 16);  // cAccumBlueBits;
        pixelFormatDescriptor.byte(22, 8);  // cAccumAlphaBits;
        pixelFormatDescriptor.byte(23, 0); // cDepthBits;
        pixelFormatDescriptor.byte(24, 0);  // cStencilBits;
        pixelFormatDescriptor.byte(25, 0);  // cAuxBuffers;
        pixelFormatDescriptor.byte(26, 0);  // iLayerType;
        pixelFormatDescriptor.byte(27, 0);  // bReserved;
        pixelFormatDescriptor.dWord(28, 0); // dwLayerMask;
        pixelFormatDescriptor.dWord(32, 0); // dwVisibleMask;
        pixelFormatDescriptor.dWord(36, 0); // dwDamageMask
        nPixelFormat = ChoosePixelFormat.call(dc, pixelFormatDescriptor);
    if (SetPixelFormat.call(dc, nPixelFormat, pixelFormatDescriptor)==0) info( "SetPixelFormat function failed.");
    hrc = wglCreateContext.call(dc);
    if (!hrc)   info( "wglCreateContext function failed.");
    if(!wglMakeCurrent.call(dc, hrc))   info( "wglMakeCurrent function failed.");
    //initializeRC();
    glClearColor.call(parm1.int(), parm2.int(), parm3.int(), parm4.int());
    glClear.call(16384);
   // opengl32_glMatrixMode.call(5889);
    //opengl32_glLoadIdentity.call();
   // glu32_gluPerspective.call(10.0, 1.0, 1.0, 10.0);

    if (fInfo)
    {
    info(mainWindow?"mainWindow = OK":"mainWindow = Error");
    info(dc?"dc = OK":"dc = Error");
    info(opengl32?"openGL = OK": "opengL = Error");
    info(glu32?"glu32 = OK": "glu32 = Error");
    info(gdi32?"gdi32 = OK": "gdi32 = Error");
    info(wglCreateContext?"wglCreateContext = OK":"wglCreateContext = ERROR");
    info(wglMakeCurrent?"wglMakeCurrent = OK": "wglMakeCurrent = ERROR");
    info(glEnable?"glEnable = OK": "glEnable = ERROR");
    info(ChoosePixelFormat?"ChoosePixelFormat = OK":"ChoosePixelFormat = OK");
    info(SetPixelFormat?"SetPixelFormat = OK":"SetPixelFormat = ERROR");
    info(glMatrixMode?"glMatrixMode = OK":"glMatrixMode = ERROR");
    info(gluPerspective?"gluPerspective = OK":"gluPerspective = ERROR");
    info(glClearColor?"glClearColor = OK":"glClearColor = ERROR");
    }
    // устанавливаем формат пиксела
   // wglMakeCurrent.call(0, 0);
   // WinAPI::releaseDC(mainWindow, dc);
}
Старый 28.11.2006, 17:54   #58  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
да, никак не успеваю оболочку для swapbuffer написать, скиньте, пожалуйста здесь
Старый 28.11.2006, 17:58   #59  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
да, никак не успеваю оболочку для swapbuffer написать, скиньте, пожалуйста здесь
Блин, ну я же тебе уже отсылал, там всё есть TestLib::Swap...

У меня ругается, если я в первый раз не удалил по завершении проги, а так всё без ругани.
Старый 28.11.2006, 23:32   #60  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
О спасибо
Теги
opengl, axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить имена полей, которые есть у таблицы? 3oppo DAX: Программирование 2 22.12.2006 14:30
ALEG: Software-as-a-service есть ли у них будущее в России Blog bot DAX Blogs 0 28.10.2006 16:10
Fullscope - Процессное производство для Axapta есть. mazzy DAX: Функционал 33 28.08.2006 13:22
Есть ли возможность вызывать код с вышележащих слоев ? FishLog DAX: Программирование 5 07.09.2004 17:24
Что есть для Inernet-а ? bucken DAX: Функционал 6 29.10.2003 12:31
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:06.