Perl 6 - the future is here, just unevenly distributed

IRC log for #pogl, 2017-02-26

| Channels | #pogl index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:55 Mithaldu CandyAngel: sorry, went afk there
01:56 Mithaldu CandyAngel: the error wrapping would optimally be switchable, as i described in the issue
01:56 Mithaldu like
01:56 Mithaldu it seems you didn't actually read anything but the title there :/
01:56 Mithaldu as for website, my biggest achievement is a 4chan clone for furries, i've no idea how to make a marketing website
01:58 CandyAngel Mithaldu: You should stop accusing people of not reading what you wrote, especially when it is obvious they did
01:59 CandyAngel I referenced several parts of your text in my response
01:59 CandyAngel So clearly, I did read it
01:59 Mithaldu all i saw is this:
01:59 Mithaldu 00:44:30 (@CandyAngel) With regards to wrapping all calls with error checking.. it will put Perl at a(nother) disadvantage when benchmarking it against other bindings
01:59 CandyAngel Mhm, which is in reference to https://github.com/devel-chm/OpenGL-Modern/issues/44
02:00 Mithaldu ah, sorry, the fact that you'd said earlier things had already been cached out
02:00 Mithaldu so my brain only had "title of issue" + <what you just said> available
02:01 Mithaldu that said, it's still stating the obvious
02:01 Mithaldu yeah, wrapping everything will make things slower
02:01 Mithaldu that's why i want an optional way for it
02:01 Mithaldu and as i said to you in the comment on github: with OpenGL.pm there was a way, but OpenGL::Modern broke it
02:02 Mithaldu due to the argument count checking
02:02 CandyAngel But having a check whether it is meant to wrap it or not will also make it slower
02:02 Mithaldu nah
02:02 Mithaldu OpenGL::Debug worked as a replacement for OpenGL and wrapped things dynamically as they were called, with AUTOLOAD
02:02 CandyAngel You can optimise away "if ($do_error)" at runtime?
02:03 Mithaldu if you wanted fast opengl all you did was use OpenGL instead of use OpenGL::Debug
02:03 Mithaldu see now you're forgetting your own post :P
02:03 Mithaldu you talked about autoload
02:03 CandyAngel I did, in that post, but I'm not right now
02:03 Mithaldu which does indeed make it perfectly viable to have error checking added on
02:04 Mithaldu https://github.com/wchristian/Microidium/blob/master/lib/OpenGL/Debug.pm
02:04 Mithaldu ok, in retrospect, i didn't even use autoload
02:04 Mithaldu just some import list munging
02:04 Mithaldu anyhow, still broken
02:04 Mithaldu also
02:05 Mithaldu actually, nah
02:05 Mithaldu hrm
02:05 Mithaldu the only way this could be done performantly is by handling it in C itself
02:05 CandyAngel Someone is pondering and typing :P
02:05 Mithaldu have a flag on the level that can be edited from the perl level
02:05 CandyAngel (I don't mind that, by the way, it's actually kinda funny and makes it feel more face-to-face talking :P)
02:06 Mithaldu haha
02:06 Mithaldu my typing is always stream of thoughts
02:06 CandyAngel ^_^
02:06 Mithaldu i believe an aditional flag check around the c calls would have minimal performance impact
02:07 Mithaldu particularly given we already have one
02:07 Mithaldu this is done before EVERY gl call: https://github.com/devel-chm/OpenGL-Modern/blob/master/utils/generate-XS.pl#L307-L312
02:07 Mithaldu so adding another block like that probably won't make things significantly slower
02:08 CandyAngel I guess it is also a question of "can we remove it in the future"
02:08 Mithaldu crap i guess i should just implement this
02:08 CandyAngel If, currently, people have to do it manually, making it automatic is fine
02:08 CandyAngel But making it automatic, so everyone relies on it, then taking it away.. could be bad
02:08 Mithaldu i'd like to point out again that i proposed various methods :P
02:09 Mithaldu provide an xs function that wraps glGetError (not perfect, but faster than doing it straight in perl)
02:09 Mithaldu embedding the functionality into each XS call with a compile switch (in Makefile.PL)
02:09 Mithaldu embedding the functionality into each XS call with a use switch, e.g. use OpenGL::Modern -debug;
02:09 Mithaldu embedding the functionality into each XS call with a runtime switch, e.g. OpenGL::Modern::glpSetDebug( 0 || 1 )
02:09 CandyAngel I know, as I put the ones I thought were best
02:09 Mithaldu the question is which of these are viable without performance issues
02:09 CandyAngel All of them being "the default should be the user checks, so it can go as fast as possible"
02:09 Mithaldu yeah of course
02:09 CandyAngel Kind of like how strict and warnings aren't defaulted. but everyone uses them :P
02:10 Mithaldu the default for all is no checking
02:10 Mithaldu that part doesn't need discussion imo :P
02:10 CandyAngel Maybe you just know a way of implementing runtime ones I don't
02:10 Mithaldu i just showed you the code for it
02:10 CandyAngel To me, runtime checks == checking on every call if it needs to handle errors
02:10 Mithaldu https://github.com/devel-chm/OpenGL-Modern/blob/master/utils/generate-XS.pl#L307-L312
02:10 Mithaldu this already happens on every call
02:10 CandyAngel yeah, i'm reading it
02:10 Mithaldu on every single call it checks if it needs to init glew
02:11 CandyAngel Eep
02:11 Mithaldu i haven't compared it to the previous version
02:11 Mithaldu but i suspect the check is quick
02:11 CandyAngel Why does it do that?
02:11 Mithaldu chm wants it so people don't need to glewInit manually
02:11 CandyAngel -.-
02:11 Mithaldu also, i guess i should profile it
02:11 * Mithaldu starts compiling
02:15 Mithaldu c with done check
02:15 Mithaldu https://gist.github.com/wchristian/9320298023e1761dbe56f0fae1e70f91
02:16 Mithaldu ~82-83% load at 60 fps
02:19 Mithaldu # spent 193ms within OpenGL::Modern::glDrawArrays which was called 41181 times, avg 5µs/call:
02:20 Mithaldu diff between c with and without check: https://gist.github.com/wchristian/9320298023e1761dbe56f0fae1e70f91/revisions#diff-b662271e9b515c6de42f3dbc4d3dba2b
02:21 Mithaldu ~82-83% load at 60 fps
02:22 Mithaldu # spent 203ms within OpenGL::Modern::glDrawArrays which was called 41857 times, avg 5µs/call:
02:22 Mithaldu in other words, the done_glewinit check comes at roughly zero cost
02:23 Mithaldu so adding another check for "do_debug" would be similarly cheap
02:28 Mithaldu interesting, the bot doesn't report activity on issues
02:29 Mithaldu anyhow, CandyAngel: https://github.com/devel-chm/OpenGL-Modern/issues/44#issuecomment-282527714
02:34 CandyAngel Ehh.. okie.
02:34 CandyAngel Just.. confused. Weren't you concerned about the overhead of something before..?
02:36 Mithaldu i *was* concerned, so i profiled it with and without such cost
02:36 Mithaldu *code
02:36 Mithaldu and found there is no overhead
02:36 Mithaldu which part of that is unclear?
02:37 CandyAngel I mean ages ago about something else which was a minimum of 1us or something like that
02:38 Mithaldu no
02:38 Mithaldu XS calls are expensive and cost 1µs each at minimum
02:43 Mithaldu CandyAngel: basically, Devel::NYTProf is the great arbiter
02:46 Mithaldu if it can measure it, it matters
02:46 Mithaldu if it can't measure it, it's irrelevant
02:46 CandyAngel :P
02:46 CandyAngel Fair enough :)
02:47 Mithaldu CandyAngel: also, if you feel up to it, i'd like to see you make an issue for the pointer argument thing
02:47 Mithaldu it'd be good to see how that looks like filtered through a third person
02:50 CandyAngel I only had a quick look because it was already late
02:51 CandyAngel My first thought was to make a YAML file though :P
02:51 CandyAngel Much easier to fill out than a hash
02:55 Mithaldu whatever is easier to edit
02:55 Mithaldu if you can get the data structure into yaml with one line per function that would be optimal
02:56 CandyAngel One line per function in YAML?
02:56 Mithaldu at this point, feel free to modify it to your likes
02:56 Mithaldu yes that would be optimal
02:56 Mithaldu i'd just be happy to the have the whole thing documented in detail and fullness as a task without needing to delay my sleep time futher
02:56 CandyAngel Oh, because of diff'ing?
02:56 Mithaldu and general editing
02:57 CandyAngel YAML is much easier to edit if you don't have 3 deep data structures on one line :P
02:57 * Mithaldu shrugs
02:57 CandyAngel glVertexAttrib:
02:57 Mithaldu i already described how it can look in a perl structure where one function easily fits a line
02:57 CandyAngel -
02:57 CandyAngel - IN
02:57 CandyAngel - variable
02:58 CandyAngel And I messed up the indentation, go me :P
02:58 Mithaldu switching to another format where each function is suddenly multiple lines won't make it easier to edit
02:58 CandyAngel Yeah, and making it in YAML on line line.. makes it look like Perl on one line, so it isn't any easier to edit
02:58 Mithaldu particularly since it also needs to be easy to read
02:58 Mithaldu since the thing needs to be easily scannable by chm
02:59 CandyAngel Hmm
02:59 Mithaldu that's really the main goal here
02:59 CandyAngel The best way might be one pointer per line then
02:59 Mithaldu get a file listing a function per line, with multiple pointers per line so he can scan down and compare patterns
03:00 CandyAngel Sounds like something the computer should be doing :P
03:01 CandyAngel Computer, give me all functions with 1 pointer that is IN and fixed.. etc.
03:01 Mithaldu no
03:01 Mithaldu at that point you already know what you're looking for
03:01 Mithaldu you're trying to search for x
03:01 Mithaldu identifying patterns is different
03:01 Mithaldu it's about finding similar groups
03:02 Mithaldu and you can't usefully ask a machine for that since it doesn't understand that and lacks chm's knowledge
03:02 CandyAngel What sort of group then?
03:02 Mithaldu groups of similar pointers
03:03 Mithaldu anyhow
03:03 CandyAngel And how can a computer not find them if it has what all the pointers are?
03:03 Mithaldu jfc
03:04 Mithaldu if i give you a group of 20 people
03:04 Mithaldu your brain will on its own come up with various ways to group their faces as similar
03:04 Mithaldu many of these groups may even intersect
03:04 Mithaldu you can't ask a computer to do the same without teaching it first
03:04 Mithaldu and you can't teach it if you don't know what you're looking for
03:04 Mithaldu this is the same
03:05 Mithaldu we do not know what we're looking for
03:05 Mithaldu that part will need to be up to chm's brain
03:05 Mithaldu the only thing we can do is collect the data and present it to him in an easily digestible format
03:05 Mithaldu nothing else matters
03:07 Mithaldu is ... this still not clear? :(
03:09 CandyAngel Yes, it is
03:10 CandyAngel Just because I'm questioning things doesn't mean they aren't clear
03:11 CandyAngel It's because I'm trying to find out why what I am thinking if different to what you (seem to) be thinking
03:11 CandyAngel is different*
03:11 Mithaldu you're thinking about binning them into groups, probably
03:12 Mithaldu which is problematic since particularly the "points at" field has many unknowns yet
03:12 Mithaldu also some batshit interpretations like "pointed into an array in earlier versions, but is simply a pointer to a numerical offset now"
03:13 Mithaldu anyway, this already went on muuuuch longer than i wanted to be awake for
03:14 CandyAngel I'm thinking of making input as easy as possible, because the output can be rendered any which way.. sorted, filtered, grouped etc.
12:40 Mithaldu CandyAngel: in a way you're right, the format is mainly bike-shedding
12:40 Mithaldu the thing that needs more work is defining how we describe the pointer types/uses, and how we can split up the work into tacklable sub tasks
12:49 CandyAngel I'd like to think so, since doing that sort of stuff is pretty much my job :P
12:55 Mithaldu job dividing?
13:05 CandyAngel Getting people who don't understand complicated data to input it, then presenting it in a way that people who don't understand complicated data can understand.. in Excel :P
13:05 Mithaldu tbh, i'm trending towards excel being a good solution here
13:08 CandyAngel Yeah... no.
13:09 Mithaldu right, well, i have some hours more of work to do
13:10 Mithaldu and after that i'll either make a ticket, or do some work on a ticket you may have created
13:12 chm joined #pogl
13:12 chm CandyAngel, Mithaldu; catching up from the log...
13:13 Mithaldu word
13:13 chm Please, no excel, CSV works for me.
13:14 Mithaldu that would be interchangable ;)
13:14 chm A posible text format by lines could be something like:
13:14 Mithaldu one column function name, and then $pointer_count * 3 columns
13:15 chm glRoutineName, arg#, annotation and we could use arg -1 or something for the return
13:16 chm This could be csv, a quick grep of the function name would collect all the info
13:16 chm You could implement a consistent set of fields for the per line values
13:16 Mithaldu chm: i think you need to make a more concrete example of that
13:17 Mithaldu how would this look like in your proposal? { glVertexAttribPointer => [ [ qw( IN offset_number variable ) ], ], }
13:17 Mithaldu glVertexAttribPointer\t1\tin\toffset_number\tvariable
13:17 Mithaldu ?
13:18 Mithaldu oooh wait
13:18 Mithaldu by arg number you mean the index of the pointer in the list of arguments
13:18 Mithaldu with one line describing one pointer argument?
13:18 Mithaldu the groupings of pointer arguments are irrelevant?
13:18 chm yes, an "entry" would be a set of lines, one per arg/ret value
13:19 chm Ths arg number or ret value and function name is repeated but it is easy to parse
13:19 chm Nice for human readable/comprehensible
13:19 Mithaldu so for this: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml
13:19 Mithaldu we'd have
13:19 Mithaldu glVertexAttribPointer\t5\tin\toffset_number\tvariable
13:20 Mithaldu glVertexAttribIPointer\t4\tin\toffset_number\tvariable
13:20 Mithaldu glVertexAttribLPointer\t4\tin\toffset_number\tvariable
13:20 Mithaldu correct?
13:20 Mithaldu what do you mean with ret value?
13:21 Mithaldu the ret value of the function?
13:21 Mithaldu i.e.
13:21 Mithaldu void\tglVertexAttribLPointer\t4\tin\toffset_number\tvariable
13:21 Mithaldu ?
13:21 Mithaldu err, return type of the function
13:23 chm glReadPixels, 0, type => void
13:23 chm glReadPixels, 1, type => GLint, name => x, io => in
13:23 chm glReadPixels, 2, type => GLint, name => y, io => in
13:23 chm glReadPixels, 3, type => GLsizei, name => width, io => in
13:23 chm glReadPixels, 4, type => GLsizei, name => height, io => in
13:23 chm glReadPixels, 5, type => GLenum, name => format, io => in
13:23 chm glReadPixels, 6, type => GLenum, name => type, io => in
13:23 chm glReadPixels, 7, type => GLvoidPtr, name => data, io => inout, other => "points to buffer to recieve data"
13:23 Mithaldu oh ALL the arguments?
13:23 Mithaldu i thought we were talking only pointers
13:24 chm Of course, the format could be more perl for simpler slurping.
13:24 Mithaldu i think with that much data csv really is the best
13:24 chm The pointers are the problem.  However, other values are used to inform
13:24 chm their potential use: how many, number of bytes/items,...
13:24 Mithaldu makes editing in open office or excel eas
13:24 chm csv works for me.
13:25 chm Of course, a dump and edit of the signature file could prepopulate the entire table to start with.
13:25 Mithaldu ok, that leaves only one thing, how to split up the work in chunks
13:26 Mithaldu which signature file?
13:26 chm badp-XS-sigs-numptr.pl in signatures/
13:27 Mithaldu right, that's pretty easy then
13:28 chm see also the list of priority ones in signature/priority/required-api-bad.txt for the ideal ones to finish first
13:28 Mithaldu aye
13:28 Mithaldu i'll do a small experiment in a bit
13:29 Mithaldu also, got a request for you
13:29 Mithaldu can you please go to https://github.com/devel-chm/OpenGL-Modern/settings/hooks/new
13:29 Mithaldu add this url in the url field: https://n.tkte.ch/h/5344/HkSGUAAGl2PeLoLsKoQdj8Kb
13:29 Mithaldu select Send me everything.
13:30 Mithaldu and click add webhook
13:30 Mithaldu i'm trying to get a bot to also mirror issue activity in here and that should do it
13:39 Mithaldu chm: ?
13:42 Mithaldu sometimes i feel like i'm just using english wrong
13:42 Mithaldu every single thing i say seems to be misunderstood
13:42 chm Nope, had to step away.
13:42 Mithaldu word
13:42 Mithaldu if you have time and inclination to do it, let me know please
13:42 chm No thank you on the redirect.
13:43 Mithaldu re #44?
13:43 chm Re random hooks to unknown URLs
13:43 Mithaldu i tried to keep the instructions concise
13:44 Mithaldu i mean you can also set it up on your own by going to https://n.tkte.ch/ and setting it up on your own
13:44 chm No thank you.
13:45 Mithaldu welp
13:48 Mithaldu chm: can you change the checkboxes here? https://github.com/wchristian/Microidium/issues/3
13:49 Mithaldu or CandyAngel
13:49 CandyAngel Will check
13:50 Mithaldu thanks
13:52 CandyAngel You know you did your benchmark for the overhead of the auto-glew init. Was that on an older machine?
13:52 Mithaldu 4 year old laptop, 4 ht cores 2.4 ghz
13:52 Mithaldu so ... kinda?
13:52 CandyAngel Ah, okies
13:54 Mithaldu so how about them checkboxes?
13:54 CandyAngel I can't change them
13:54 Mithaldu alright, lemme try and make you a contributor
13:54 CandyAngel And that's newer than my laptop :P
13:54 CandyAngel And lots newer than the laptop before it that I first started doing POGL things on :P
13:56 Mithaldu CandyAngel, chm: link sent
13:56 Mithaldu CandyAngel: yeah i know you're saying that on older machines the performance impact might be measurable
13:57 Mithaldu but really, it completely disappeared in the noise, which means even if it's done on a slower machine it would still disappear in the noise
13:58 CandyAngel I can select them now
13:59 CandyAngel I can also change the order..
13:59 Mithaldu excellent
13:59 Mithaldu that means once chm adds you as a contributor we can set up lists of batches of functions
13:59 Mithaldu with one checkmark for "taken" and one for "done"
13:59 Mithaldu that way they can be worked through concurrently without duplicating work
14:01 CandyAngel If it will be csv anyway, could we use etherpad or gobby?
14:02 CandyAngel Or something like that
14:02 Mithaldu heck i wouldn't mind that either
14:02 Mithaldu dunno what chm thinks
14:03 Mithaldu although the base file will need to be generated from the signatures list file first in any case
14:03 CandyAngel Sure
14:13 Mithaldu looking at badp-XS-signatures.pl it's probably a good idea to include the features marker and group things by that
14:14 Mithaldu with those listed in priority/required-api-bad.txt being lifted to the top of the list
15:33 CandyAngel https://www.cnet.com/products/fujitsu-lifebook-e6624-piii-m-933-mhz-14-1-tft/specs/
15:33 CandyAngel This is the laptop I started using POGL on
15:35 CandyAngel And this is what I replaced it with (and have now): https://www.cnet.com/products/acer-aspire-5930g-734g32mn-15-4-core-2-duo-p7350-4-gb-ram-320-gb-hdd/specs/
15:48 CandyAngel (I actually still have the 6624, but the keyboard is broken..
16:20 chm joined #pogl
16:20 chm CandyAngel: You are already a contributor to my OpenGL-Modern repo
16:21 chm Mithaldu, CandyAngel: I like the idea of grouping by feature as well.
16:22 chm Helps keep track of where we are in completion and makes for simpler? ways to state what is done
16:23 Mithaldu good
16:23 chm CandyAngel: re the optimization of the GL constants.
16:23 chm For very fast routines, you need to optimize for latency.
16:24 chm That is why loading before compile so you get 75% less overhead is a good thing.
16:24 chm Mithaldu: This is where I diverge a bit in concern level for the "bigger" routines.
16:24 chm I would like to get the functionality in there before seeing just how fast it can go.
16:25 Mithaldu which functionality?
16:25 chm For example: we've discussed multiple ways that things can be made faster (all the way to JIT compilation)
16:26 chm But we can prioritise the optimization work with actual timings from real usage.
16:26 chm A large part of the shader API and buffers is all about doing a bunch of stuff in one call
16:26 chm or asynchronously so that the graphics can just go f-a-s-t!
16:27 Mithaldu i'm just lost as to the context of what you're saying
16:27 chm You want to opitmize ahead of 1st implementation.
16:28 chm I want to optimize after we have code that work.
16:28 chm For example, I can't even run my PDL routines that use OpenGL with OpenGL::Modern.
16:28 CandyAngel I don't mind any implementation, if it can be changed to be faster later without affecting the end user
16:28 CandyAngel I just want to avoid doing things you can't do or will limit the optimisations later
16:29 Mithaldu i've already resigned to the fact that you'll do whatever and we'll see later, but i don't know which optimization at what point you're talking about, ticket #44 ?
16:29 chm CandyAngel: That was my idea...as long as the implementation is not visible to the user,
16:29 chm we are free to change it at any time.
16:29 CandyAngel Yeah, but autowrapping errors in some cases, will be user-visible
16:29 CandyAngel If you try to remove it for speed, I mean
16:30 chm Losing track of the mulit-verse threads here but there are 3 options for
16:31 chm performance that I consider good: from default runtime flag, to use or module as fast as possible code.
16:31 chm Re the errors, if we have the XS accelerated glGetErrors that can be used at any time by the user.
16:32 chm As timings have shown, more helpful diagnostics by a runtime flag can be largely hidden from performance costs.
16:32 chm CandyAngel: To a certain extent, I _am_ talking about changing things for the perl OpenGL users.
16:32 CandyAngel My concerns can be a bit weird, because I end up wanting to do weird things
16:33 CandyAngel like running my games on machines that shipped with Win98 on them
16:33 chm Ideally, they would not have to deal with C only issues and the perl environment could make things nicer.
16:33 CandyAngel or driving 2 HMDs at a time..
16:34 CandyAngel 2+ HMDs even
16:34 chm CandyAngel: I think performance is key.  Just fixing it before we know the actual numbers is a waste of time.
16:34 Mithaldu chm: for what it's worth, reading the explanations you're saying here is STILL morphing my understanding of the gh comment i was confused about
16:35 chm We could optimize the perl constant subs because we know an understand and can measure the effect.
16:35 chm E.g., it can affect the total number of sprites that can be rendered.
16:36 chm CandyAngel: what is a gh comment?
16:36 CandyAngel github
16:36 CandyAngel ?
16:36 Mithaldu yes
16:36 chm CandyAngel: sorry, yellow color for Mithaldu and I couldn't read it.
16:36 Mithaldu haha
16:37 CandyAngel As far as I know, being mistaken for Mithaldu isn't an insult, so no worries :P
16:37 chm CandyAngel: maybe we should open a more general issue to track performance: speed, memory use, latency
16:38 CandyAngel Also, I really don't mind nice things.. until the nice things are mandatory and interfere :P
16:38 Mithaldu in any case, yeah, sure, a convenience version of glGetError that wraps the particularls in XS might be useful too so spot checks can be done without going full hog
16:38 chm Something abouut my irssi it sometimes puts names in colors that are not readable on a white background.
16:38 CandyAngel chm: nick_color
16:38 Mithaldu irssi is designed for black backgrounds afaik
16:38 chm So how do I disable it or force a different set of colors---like no light yellow?
16:38 CandyAngel I had the same problem and had to adjust the colors it chooses (because sometimes I have white terminal and sometimes black)
16:39 chm Hmm, that helps a lot to know.
16:39 chm reverse video is enabled!
16:40 chm CandyAngel, Mithaldu: now that I have yellow on black I don't know _how_ I could have confused the two of you.  :-)
16:40 Mithaldu ha
16:40 CandyAngel Hindsight is 20/20
16:41 chm I'm going to reduce my #pogl somewhat or I'll never finish the OpenGL::Array and OpenGL::GLUT splits.
16:41 chm It would be wonderful to get them done so that OpenGL::Modern will no longer require
16:41 chm the legacy module to be loaded for non-OpenGL functionality.
16:42 Mithaldu glew can't help with glut, huh?
16:42 chm The good news is the plan is to maintain the existing functionality...just as a separate module.
16:42 Mithaldu also, i checked the test results, and the orange results appear now
16:42 chm GLUT is a GUI, Xwindows is a GUI, Qt is a GUI, GLFW is a GUI.
16:42 Mithaldu aight
16:43 chm OpenGL can be used for graphics in any GUI toolkit that supports and provides OpenGL contexts.
16:43 Mithaldu http://fast-matrix.cpantesters.org/?dist=OpenGL-Modern%200.03
16:43 chm It was useful to fold it in to get OpenGL working on MSWindows.
16:43 Mithaldu can't access the results for those yet, but they are there
16:43 chm From a software engineering point of view, it scrambled things up.
16:44 Mithaldu aye
16:44 chm I think splitting things out will clean things up and mean folks can use only what they need.
16:44 chm Looking at you, CandyAngel.
16:44 CandyAngel Whaaa
16:45 CandyAngel I only use GLUT because that's all I've used. I'm fine with switching to better things :P
16:45 chm Mithaldu: I'm sorry I still haven't sold you on roles here.  I may be using the wrong
16:45 chm terminology but something feels right about the approach.  Maybe it is *not* feasible, but
16:45 chm I was hope you might help determine why or why not.  And if there is something better, lets hear it.
16:46 Mithaldu well maybe this'll help you
16:46 Mithaldu roles are for sharing things between different classes
16:46 chm CandyAngel: If you look the OpenGL Modern development plan: https://github.com/devel-chm/opengl-modern/wiki/OpenGL::Modern-Development
16:46 Mithaldu and roles commonly share one of two things:
16:47 chm you'll see that adding GLFW and some OpenGL::FontSupport is in there.
16:47 chm Not because GLUT doesn't work but because of licensing issues, it is not as
16:47 CandyAngel Oh, I'm not in a rush to change, don't worry about that
16:47 Mithaldu 1. standards, interfaces. roles like that contain ONLY requires calls, nothing else. they only serve to communicate "the class consuming this abides by the standard defined here-in" and enforce existence of certain methods. using the word "implementation" anywhere near them is flat out wrong.
16:48 chm compatible as it could be.  GLFW + some fonts should be a much cleaner base GUI for OpenGL::Modern development
16:48 CandyAngel Also, and this is probably a very stupid question.. but will OpenGL::Modern be able to draw to contexts given to it by something else?
16:48 Mithaldu 2. implementations. those roles contain attributes and methods and implement something. only useful if you actually have two different classes that can make use of the same identical version of a method.
16:48 CandyAngel If.. that is even how contexts work :P
16:49 chm Mithaldu: Thank for the example.  Unfortunately, I know the text.  I'm hoping an attempted implementation by me will be more productive.
16:50 chm CandyAngel: OpenGL and OpenGL::Modern already will work with any other GUI toolkit that provides one.
16:50 Mithaldu aight
16:50 chm Thanks to Dmitry, we have Prima::OpenGL which lets you use the Prima toolkit with all the OpenGL rendering goodness.
16:50 Mithaldu CandyAngel: i use sdl in microidium and i think i'm using whatever context it provides
16:51 chm Mithaldu: I hate to ask, would "provide OpenGL context" be a possible role?
16:51 CandyAngel That's okay. I know there is a project in the works which I might *have* to use, but I wasn't sure if I could.. sounds like it isn't a problem
16:52 CandyAngel (basically, Direct Mode for HMDs)
16:52 CandyAngel Where they aren't a monitor, you have to do special things to draw to them
16:52 Mithaldu chm: err, maybe as an interface role? otherwise: ETOOVAGUE
16:52 chm CandyAngel: One of my motivations for OpenGL::Modern built from GLEW is that we get EGL support too.
16:52 chm Mithaldu: EGOTIT!  :-)
16:53 Mithaldu i assume you'd consider it a role to be consumed by both Prima and SDL
16:53 Mithaldu to inform an opengl-doing thing that when it's given either of those objects, it can expect a context to be around
16:53 chm Prima, SDL, Qt, GLFW, GLUT, wsWidgets,...
16:54 Mithaldu i can't really imagine opengl things being written in a way where they don't care about which gui toolkit is around
16:54 chm Yes, so things will just work.  Right now, there are usually per-GUI calls you need to make.
16:54 Mithaldu errr
16:54 CandyAngel wx.. oh how I wish you'd actually compile so I can use thee
16:55 Mithaldu that would require those objects to also implement common methods
16:55 Mithaldu and the role does little more than define the name of methods
16:55 chm Actually, OpenGL usually doesn't do anything but render.  The GUI stuff is handled by system specific code.
16:55 Mithaldu actually, *nothing* more
16:55 Mithaldu "things will just work" is usually not a thing roles help to do
16:55 chm Mithaldu: I looked at Wx and decided not since it wasn't really cross-platform.
16:56 chm You pretty much had to use it differently for each platform.
16:56 Mithaldu you meant CandyAngel :)
16:56 chm I was looking for something more transparent and seamless.
16:56 chm Ack, my bad!
16:57 CandyAngel I wanted to use it because getting Tcl/Tk set up at work is really awkward
16:57 CandyAngel And I don't really want to learn that much Javascript to do it as a webapp either :P
16:57 chm CandyAngel: If you are using perl, you might want to take a look a Prima.
16:58 chm Shopping to do, catch you later, o/
17:00 CandyAngel baibai
20:47 opkick [OpenGL-Modern] wchristian created glGetError_auto (+1 new commit): https://git.io/vykQJ
20:47 opkick OpenGL-Modern/glGetError_auto 5c0b34d Christian Walde: crude sketch of auto error checking
21:04 opkick [OpenGL-Modern] wchristian opened pull request #50: crude sketch of auto error checking - please help improve (master...glGetError_auto) https://git.io/vykQ9

| Channels | #pogl index | Today | | Search | Google Search | Plain-Text | summary