Вверх ↑
Этот топик читают: Гость
Ответов: 1161
Рейтинг: 160
#1: 2008-10-07 18:19:46 ЛС | профиль | цитата
У меня почему то не получилось создать OpenGL на чужом окне. Скажите, как можно сделать, чтобы среда(если ее так можно назвать) OpenGL отображалась на другой форме
Вот так не работает
code_10208.txt
А вот этот работает, но когда окно приложения пропадает, то OpenGL изчезает
code_10209.txt
карма: 0

0
файлы: 2code_10208.txt [1.7KB] [208], code_10209.txt [2.1KB] [196]
Ответов: 1926
Рейтинг: 172
#2: 2008-10-07 21:00:51 ЛС | профиль | цитата
LainX, 65658 - это идентификатор какого окна? Известно ли тебе, что при новом запуске программы идентификатор окна каждый раз новый?

А второй код не работает потому .что скриншоты снимаются только с видимой части окна. Попробуй наполовину утащить окно за пределы экрана и снять его alt+PrentScreen (т.е. снять только активное окно). Ты убедишься, что снята лишь видимая часть.
карма: 9
0
Ответов: 1161
Рейтинг: 160
#3: 2008-10-07 21:15:22 ЛС | профиль | цитата
3042 писал(а):
LainX, 65658 - это идентификатор какого окна? Известно ли тебе, что при новом запуске программы идентификатор окна каждый раз новый?

Прекрасно знаю. Но даже если при запуске программы сделать поиск нужного окна, то OpenGL не создастся
P.S. 65658 - Taskbar Handle
3042 писал(а):
А второй код не работает потому .что скриншоты снимаются только с видимой части окна. Попробуй наполовину утащить окно за пределы экрана и снять его alt+PrentScreen (т.е. снять только активное окно). Ты убедишься, что снята лишь видимая часть.

LainX писал(а):
А вот этот работает, но когда окно приложения пропадает, то OpenGL изчезает

Я сказал, что он не всегда работает. Да и я хочу сделать программу в фоновом режиме, т.ч. такой способ мне все равно не подойдет. 3042, если ты знаешь, как это сделать, то скажи пожалуйста
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2008-10-07 22:11:38 ЛС | профиль | цитата
LainX писал(а):
У меня почему то не получилось создать OpenGL на чужом окне

видимо контекст OpenGL нельзя создавать для HDC не из текущего процесса
карма: 27
0
Ответов: 1161
Рейтинг: 160
#5: 2008-10-08 13:37:56 ЛС | профиль | цитата
Эх, жалко
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#6: 2008-10-28 11:52:02 ЛС | профиль | цитата
Не смог отрисовать объект GL_Cube2:
code_10421.txt
------------ Дoбавленo:

Проблемы с освещением объекта GL_Disk:

Add(MainForm,15261923,84,42)
{
Width=0
Height=0
BorderStyle=0
Point(MouseX)
Point(MouseY)
Point(onResize)
Point(Handle)
Point(doWidth)
Point(doHeight)
link(onCreate,5584133:doEvent1,[])
link(onResize,3213527:doWork2,[(123,69)(123,146)])
}
Add(GL_Main,12986311,336,133)
{
Color=0
link(onInit,7714257:doEnabled,[])
link(onViewPort,3410847:doPerspective,[(373,146)(373,188)])
link(Handle,15261923:Handle,[(342,94)(104,94)])
}
Add(Timer,9506849,210,238)
{
Interval=10
Enable=1
link(onTimer,1049454:doEvent1,[])
}
Add(GL_GTools,771925,336,238)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(GL_GluTools,4593655,553,133)
{
Texture=0
link(onInit,6976573:doEnabled,[])
}
Add(Hub,1049454,259,238)
{
OutCount=6
link(onEvent1,771925:doClear,[])
link(onEvent2,771925:doPushMatrix,[])
link(onEvent3,8792105:doWork,[(305,258)(305,230)])
link(onEvent4,771925:doPopMatrix,[(313,265)(313,258)])
link(onEvent5,12986311:doFlip,[(320,272)(320,153)])
link(onEvent6,14427063:doReadKey,[])
}
Add(HubEx,3213527,308,133)
{
link(onEvent,12986311:doViewPort,[])
}
Add(GL_Light,6976573,609,133)
{
Diffuse=65535
Specular=0
link(onEnabled,6976573:doMove,[(651,139)(651,175)(595,175)(595,146)])
link(Point,5501973:Point3D,[])
}
Add(GL_Options,1571481,469,133)
{
link(onEvent,15984634:doEnabled,[])
}
Add(GL_Options,15984634,511,133)
{
Flag=1
link(onEvent,4593655:doInit,[])
}
Add(GL_Perspective,3410847,378,182)
{
Fovy=80
zNear=0.01
zFar=120000
link(Aspect,4161604:Var1,[(384,170)(41,170)])
}
Add(GL_Point3D,5501973,609,91)
{
X=1
}
Add(GL_Options,14989432,427,133)
{
Flag=2
link(onEvent,1571481:doEnabled,[])
}
Add(Hub,5584133,133,56)
{
OutCount=4
link(onEvent1,4161604:doWork1,[(174,62)(174,31)(23,31)(23,76)])
link(onEvent2,12986311:doInit,[(319,69)(319,139)])
link(onEvent3,3213527:doWork1,[(312,76)])
link(onEvent4,9506849:doTimer,[(201,83)(201,244)])
}
Add(Keyboard,14427063,301,273)
{
Key=27
link(onReadKey,6757641:doCase,[])
}
Add(MultiElement,4161604,35,70)
{
link(onEvent1,15261923:doWidth,[])
link(onEvent2,15261923:doHeight,[])
}
BEGIN_SDK
Add(EditMulti,14495888,10,10)
{
EventCount=2
WorkCount=1
VarCount=1
Width=279
Height=270
link(doWork1,14428931:doEnum,[(68,16)(68,48)])
link(Var1,4020073:Result,[(16,261)(146,261)])
}
Add(Screen,14428931,126,28)
{
EnumMask="%v%h"
link(onEnum,10190258:doEvent1,[(170,34)(170,80)(36,80)(36,153)])
}
Add(Hub,10190258,49,147)
{
OutCount=3
link(onEvent1,13019782:doData,[])
link(onEvent2,11320503:doData,[])
link(onEvent3,4020073:doOperation,[(103,167)(103,216)])
}
Add(Math,4020073,140,210)
{
OpType=3
link(Op1,5983030:Data2,[(146,167)(118,167)])
link(Op2,5775196:Data2,[(153,167)(181,167)])
}
Add(GetData,5983030,105,98)
{
link(Data,14428931:Width,[(111,86)(132,86)])
}
Add(GetData,5775196,168,98)
{
link(Data,14428931:Height,[(174,86)(139,86)])
}
Add(DoData,13019782,105,147)
{
link(onEventData,14495888:onEvent1,[(213,153)(213,16)])
link(Data,5983030:Data1,[])
}
Add(DoData,11320503,168,154)
{
link(onEventData,14495888:onEvent2,[(244,160)(244,23)])
link(Data,5775196:Data1,[])
}
END_SDK
Add(Case,6757641,343,273)
{
Value=Integer(1)
link(onTrue,12893931:In,[])
}
Add(GL_Options,7714257,385,133)
{
Flag=3
link(onEvent,14989432:doEnabled,[])
}
Add(LineBreak,13029793,28,42)
{
Caption="Exit"
link(Out,15261923:doClose,[(71,48)(71,69)])
Primary=[12893931,357,238]
}
Add(Check,8792105,378,224)
{
link(onEvent,15519568:doDraw,[])
}
Add(GL_Color,12584609,483,287)
{
Color=255
link(onColor,14528188:doDraw,[])
}
Add(GL_Sphere,14528188,525,287)
{
Radius=0.5
Slices=200
link(onDraw,13143813:doTranslate,[])
}
Add(Gl_Axis,15519568,441,224)
{
link(onDraw,12709963:doNext,[])
}
Add(GL_Rotate,15278660,532,224)
{
Z=1
link(onRotate,11745645:doNext,[])
}
Add(Counter,12709963,490,224)
{
Max=359
link(onNext,15278660:doRotate,[])
}
Add(GL_Cube,13345183,651,287)
{
link(onDraw,12331692:doTranslate,[])
}
Add(GL_Rotate,14324774,616,224)
{
X=1
link(onRotate,10558795:doColor,[])
}
Add(Counter,11745645,574,224)
{
Max=359
Type=1
link(onNext,14324774:doRotate,[])
}
Add(Gl_Translate,13143813,567,287)
{
X=2
link(onTranslate,1872641:doColor,[])
}
Add(GL_Color,1872641,609,287)
{
Color=65280
link(onColor,13345183:doDraw,[])
}
Add(Gl_Translate,12331692,700,287)
{
X=-2
Y=2
link(onTranslate,11079276:doColor,[])
}
Add(GL_Color,11079276,742,287)
{
Color=65535
link(onColor,1879518:doDraw,[])
}
Add(GL_Torus,1879518,784,287)
{
inRadius=0.25
outRadius=0.5
link(onDraw,2849434:doTranslate,[(825,293)(825,327)(471,327)(471,342)])
}
Add(Gl_Translate,2849434,483,336)
{
Y=-2
Z=2
link(onTranslate,1374174:doColor,[])
}
Add(GL_Color,1374174,525,336)
{
Color=16711935
link(onColor,16425118:doDraw,[])
}
Add(GL_Disk,16425118,574,336)
{
InRadius=0.25
OutRadius=0.5
link(onDraw,827019:doTranslate,[])
}
Add(Gl_Translate,827019,616,336)
{
X=-2
Z=-2
link(onTranslate,6580863:doColor,[])
}
Add(GL_Color,6580863,658,336)
{
Color=32896
link(onColor,3401195:doDraw,[])
}
Add(GL_Cylinder,3401195,700,336)
{
BaseRadius=0.25
TopRadius=0.25
Height=0.5
link(onDraw,11296059:doTranslate,[])
}
Add(Gl_Translate,11296059,749,336)
{
X=2
Y=-2
link(onTranslate,1099981:doColor,[])
}
Add(GL_Color,1099981,791,336)
{
Color=8388736
link(onColor,1089914:doPushMatrix,[])
}
Add(GL_Dodecahedron,3630524,924,336)
{
link(onDraw,5369242:doPopMatrix,[])
}
Add(Gl_Scale,2184650,882,336)
{
X=0.3
Y=0.3
Z=0.3
link(onScale,3630524:doDraw,[])
}
Add(Gl_Translate,13562626,483,378)
{
Y=2
Z=-2
link(onTranslate,9205214:doColor,[])
}
Add(GL_Color,9205214,525,378)
{
Color=32768
link(onColor,3539203:doDraw,[])
}
Add(GL_GTools,1089914,840,336)
{
Point(doPushMatrix)
link(onEvent,2184650:doScale,[])
}
Add(GL_GTools,5369242,973,336)
{
Point(doPopMatrix)
link(onEvent,13562626:doTranslate,[(1017,342)(1017,374)(467,374)(467,384)])
}
Add(GL_Cylinder,3539203,574,378)
{
BaseRadius=0.25
TopRadius=0
Height=0.5
}
Add(GL_Color,10558795,672,224)
{
Color=65535
link(onColor,8131627:doDraw,[])
}
Add(GL_Disk,8131627,721,224)
{
InRadius=0.5
OutRadius=1
link(onDraw,12584609:doColor,[(765,230)(765,262)(471,262)(471,293)])
}

------------ Дoбавленo:

Идеальная вселенная света: объекты не отбрасывают теней друг на друга.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1code_10421.txt [3.8KB] [310]
Ответов: 1304
Рейтинг: 405
#7: 2008-10-30 21:28:25 ЛС | профиль | цитата
Nic, фигуры GL_Cube2, GL_Plane, не имеют заданных по умолчанию размеров, размер надо задавать через координаты
code_10451.txt
Проблемы с освещением объекта GL_Disk

Прикольное ассорти, если проблема с тенями то увы пока помочь не могу, хотя знаю что тени можно получить ипользуя буфер трафарета



карма: 3

0
файлы: 1code_10451.txt [4.6KB] [240]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)