AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 21.11.2006, 16:57   #1  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
OpenGL (вот что есть на данный момент)
Code:
static void Job5(Args _args)
{
    HWND mainWindow;
    HWND dc;
    HWND hrc;
    // Загрузка библиотек
    DLL  opengl32 = new DLL("opengl32.dll");
    DLL  glu32    = new DLL("glu32.dll");
    DLL  gdi32    = new DLL("gdi32.dll");
    //
 
    // Получение точек входа функций
    DLLFunction opengl32_wglCreateContext = new DLLFunction(opengl32, "wglCreateContext");
    DLLFunction opengl32_wglMakeCurrent   = new DLLFunction(opengl32, "wglMakeCurrent");
    DLLFunction opengl32_glEnable         = new DLLFunction(opengl32, "glEnable");
    DLLFunction gdi32_ChoosePixelFormat   = new DLLFunction(gdi32,    "ChoosePixelFormat");
    DLLFunction gdi32_SetPixelFormat      = new DLLFunction(gdi32, "SetPixelFormat");
    DLLFunction opengl32_glMatrixMode     = new DLLFunction(opengl32, "glMatrixMode");
    DLLFunction opengl32_glLoadIdentity   = new DLLFunction(opengl32, "glLoadIdentity");
    DLLFunction glu32_gluPerspective      = new DLLFunction(glu32, "gluPerspective");
    //
    Binary  pixelFormatDescriptor = new Binary(40);
    void setDCPixelFormat()
    {
        int nPixelFormat;
        ;
        pixelFormatDescriptor.Word(0, 40);                // nSize
        pixelFormatDescriptor.Word(2, 1);                 // nVersion
        pixelFormatDescriptor.dWord(4, 4 | 32 | 1);     // dwFlags
        pixelFormatDescriptor.byte(8, 0);                 // iPixelType
        pixelFormatDescriptor.byte(9, 24);                // cColorBits
        pixelFormatDescriptor.byte(10, 0);  // cRedBits;
        pixelFormatDescriptor.byte(11, 0);  // cRedShift;
        pixelFormatDescriptor.byte(12, 0);  // cGreenBits;
        pixelFormatDescriptor.byte(13, 0);  // cGreenShift;
        pixelFormatDescriptor.byte(14, 0);  // cBlueBits;
        pixelFormatDescriptor.byte(15, 0);  // cBlueShift;
        pixelFormatDescriptor.byte(16, 0);  // cAlphaBits;
        pixelFormatDescriptor.byte(17, 0);  // cAlphaShift;
        pixelFormatDescriptor.byte(18, 0);  // cAccumBits;
        pixelFormatDescriptor.byte(19, 0);  // cAccumRedBits;
        pixelFormatDescriptor.byte(20, 0);  // cAccumGreenBits;
        pixelFormatDescriptor.byte(21, 0);  // cAccumBlueBits;
        pixelFormatDescriptor.byte(22, 0);  // cAccumAlphaBits;
        pixelFormatDescriptor.byte(23, 32); // 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 = gdi32_ChoosePixelFormat.call(dc, pixelFormatDescriptor);
        gdi32_SetPixelFormat.call(dc, nPixelFormat, pixelFormatDescriptor);
 
    }
    void initializeRC()
    {
        opengl32_glEnable.call(2929);
        opengl32_glEnable.call(2896);
        opengl32_glEnable.call(16384);
    }
 
    void repaint()
    {
    }
    ;
    // Установка функций
    opengl32_wglCreateContext.returns(ExtTypes::DWord);
    opengl32_wglCreateContext.arg(ExtTypes::DWord);
    opengl32_wglMakeCurrent.returns(ExtTypes::DWord);
    opengl32_wglMakeCurrent.arg(ExtTypes::DWord, ExtTypes::DWord);
    opengl32_glEnable.returns(ExtTypes::void);
    opengl32_glEnable.arg(ExtTypes::DWord);
    gdi32_ChoosePixelFormat.returns(ExtTypes::DWord);
    gdi32_ChoosePixelFormat.arg(ExtTypes::DWord, ExtTypes::Pointer);
    gdi32_SetPixelFormat.returns(ExtTypes::DWord);
    gdi32_SetPixelFormat.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer);
    opengl32_glMatrixMode.returns(ExtTypes::void);
    opengl32_glMatrixMode.arg(ExtTypes::DWord);
    opengl32_glLoadIdentity.returns(ExtTypes::void);
    opengl32_glLoadIdentity.arg();       // возможно нужно добавить
    glu32_gluPerspective.returns(ExtTypes::void);
    glu32_gluPerspective.arg(ExtTypes::Double, ExtTypes::Double, ExtTypes::Double, ExtTypes::Double);
    //
    mainWindow = infolog.hWnd();
    dc         = WinAPI::getWindowDC(mainWindow);
    setDCPixelFormat();
    hrc = opengl32_wglCreateContext.call(dc);
    opengl32_wglMakeCurrent.call(dc, hrc);
    initializeRC();
    opengl32_glMatrixMode.call(5889);
    opengl32_glLoadIdentity.call();
    glu32_gluPerspective.call(10.0, 1.0, 1.0, 10.0);
 
 
 
    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(opengl32_wglCreateContext?"opengl32_wglCreateContext = OK":"opengl32_wglCreateContext = ERROR");
    info(opengl32_wglMakeCurrent?"opengl32_wglMakeCurrent = OK": "opengl32_wglMakeCurrent = ERROR");
    info(opengl32_glEnable?"opengl32_glEnable = OK": "opengl32_glEnable = ERROR");
    info(gdi32_ChoosePixelFormat?"gdi32_ChoosePixelFormat = OK":"gdi32_ChoosePixelFormat = OK");
    info(gdi32_SetPixelFormat?"gdi32_SetPixelFormat = OK":"gdi32_SetPixelFormat = ERROR");
    info(opengl32_glMatrixMode?"opengl32_glMatrixMode = OK":"opengl32_glMatrixMode = ERROR");
    info(glu32_gluPerspective?"glu32_gluPerspective = OK":"glu32_gluPerspective = ERROR");
    // устанавливаем формат пиксела
    WinAPI::releaseDC(mainWindow, dc);
}
нужно создать еще классы для объектов библиотеки, но пока нехватает времени....

Geändert von Eldar9x (22.11.2006 um 13:08 Uhr)
This post has been rated by: PavelX (1).
Alt 21.11.2006, 16:58   #2  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
не обращайте внимания пока на

// устанавливаем формат пиксела

потом добавлю
Alt 21.11.2006, 17:42   #3  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2499 (89) +++++++++
Registriert seit: 20.08.2005
Так неправильно
Zitat:
4 || 32 || 1
для побитовых операций используются операторы | и & (одиночные). А у вас в результате получается единица
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: Eldar9x (1).
Alt 21.11.2006, 17:54   #4  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Да фигня это всё, не работает ничего. Чёрный экран и всё.

А ещё попробуйте линию нарисовать, в каком формате отправлять координаты так и не разобрался . . .
Alt 22.11.2006, 13:01   #5  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
так не работает это потому, что нужно вывод то на экран еще сделать, а тут только подготовительные операции. Пока что нужно описать один из классов библиотеки glu32.dll, а затем вызывать функцию вывода объекта. Насчет рисования линии, координаты можно отправлять в любом формате, это зависит от того какую функцию Вы будете использовать. Обычно я использовал тип float, в Аксапте по видимому это тип Double, то есть функция будет описываться с параметрами ExtTypes:ouble
Alt 22.11.2006, 13:04   #6  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
AndyD, спасибо за поправку, это я пока привыкаю к X++ )
Alt 22.11.2006, 15:04   #7  
Delfins ist offline
Delfins
Участник
 
320 / 39 (2) +++
Registriert seit: 20.09.2005
Ort: Riga, Latvia
Тогда уж лучше всё в класс запихивать с самого начала.
А зачем оно вам - opengl - в Аxапте? Типа отчёт в 3d?
Alt 22.11.2006, 15:45   #8  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Zitat:
Zitat von Delfins Beitrag anzeigen
А зачем оно вам - opengl - в Аxапте? Типа отчёт в 3d?
Ну как тебе сказать Вот я раньше в недвижимости работал, там доходило до вставки роликов для демонстрации домов, участков, а как было бы просто если б вместо ролика на 100мб просто загружалась сцена весом ну скажем в два мегабайта, при чём степень свободы на сколько увеличивается
This post has been rated by: Eldar9x (1).
Alt 22.11.2006, 19:15   #9  
Delfins ist offline
Delfins
Участник
 
320 / 39 (2) +++
Registriert seit: 20.09.2005
Ort: Riga, Latvia
А может какой CAD-activex использовать?
Помоему естьмнго компонентов именно для такой задачи!
Alt 22.11.2006, 19:40   #10  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань

Delfins, Ваше предложение не является решением проблемы. Какой толк от такого компилятора (...или интерпретатора), если его нельзя использовать в полной мере (я имею ввиду программирование)....
Alt 22.11.2006, 19:41   #11  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань

Delfins, Ваше предложение не является решением проблемы. Какой толк от такого компилятора (...или интерпретатора), если его нельзя использовать в полной мере (я имею ввиду программирование)....в
Alt 23.11.2006, 12:26   #12  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Zitat:
Zitat von Delfins Beitrag anzeigen
А может какой CAD-activex использовать?
Помоему естьмнго компонентов именно для такой задачи!
Вот именно потому, что это ActiveX и не хочется, его ж надо будет на всех машинах регистрить . . .
Alt 23.11.2006, 12:51   #13  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
http://erpkb.com/Axapta/AvtoregistracijaActiveX
Alt 23.11.2006, 13:18   #14  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
Аргументаы функции
- решение проблемы с неверным вызовом функции glClearColor()

Zitat:
DLLFunction glClearColor = new DLLFunction(opengl32, "glClearColor");COMVariant parm1 = new COMVariant();COMVariant parm2 = new COMVariant();COMVariant parm3 = new COMVariant();COMVariant parm4 = new COMVariant();;glClearColor.returns(ExtTypes::void);glClearColor.arg(ExtTypes:Word, ExtTypes:Word, ExtTypes:Word, ExtTypes:Word);parm1.float(1.0);parm2.float(0.0);parm3.float(0.0);parm4.float(1.0);glClearColor.call(parm1.int(), parm2.int(), parm3.int(), parm4.int());
Alt 23.11.2006, 14:19   #15  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Замечательно, а как быть с правами?
Alt 23.11.2006, 14:24   #16  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
а рабочих мест много? в принципе можно имперсонироваться админом зарегистрировать и разлогинится. Или руками. Или админским софтом.
Alt 23.11.2006, 14:27   #17  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Zitat:
Zitat von Eldar9x Beitrag anzeigen
Аргументаы функции
- решение проблемы с неверным вызовом функции glClearColor()
Вот интересно, прежде чем запостить попробовал? А потом, нафига туда int-то передавать?
Alt 23.11.2006, 14:29   #18  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Zitat:
Zitat von belugin Beitrag anzeigen
а рабочих мест много? в принципе можно имперсонироваться админом зарегистрировать и разлогинится. Или руками. Или админским софтом.
Много было более 1000, админов особо не подёргаешь, ну согласись, муторно
Alt 23.11.2006, 14:38   #19  
blokva ist offline
blokva
Пенсионер
Benutzerbild von blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Registriert seit: 04.06.2003
Ort: Беларусь
Zitat:
Zitat von Dronas Beitrag anzeigen
Ну как тебе сказать Вот я раньше в недвижимости работал, там доходило до вставки роликов для демонстрации домов, участков, а как было бы просто если б вместо ролика на 100мб просто загружалась сцена весом ну скажем в два мегабайта, при чём степень свободы на сколько увеличивается
где-то в недрах форума, лежит мой маленький проектик с баловством на тему VRML может это подойдет?
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Alt 23.11.2006, 14:44   #20  
Dronas ist offline
Dronas
Участник
 
213 / 14 (1) ++
Registriert seit: 16.11.2004
Zitat:
Zitat von blokva Beitrag anzeigen
где-то в недрах форума, лежит мой маленький проектик с баловством на тему VRML может это подойдет?

Сдаётся мне, что VRML тоже ActiveX или что-то подобное . . .
Stichworte
opengl, axapta

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Как получить имена полей, которые есть у таблицы? 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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 11:25 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.