It's midnight now, everybody good night.
Finally get through OpenCL's Hello World in Kotlin. Computing 3 million times sin and cos using GPU, total time is 456ms, 105ms is used to compute and read result back to CPU. On the other hand, CPU takes whole 891ms to compute cos and sin. Which I guess it's more convinced for me to just say "GPU is good for parallel computing". The result is more vivid than sentences.
After doing this, I though LWJGL's document on OpenCL is really bad. What all I referenced are Java test codes and C++ codes. And I rely on my experience a lot to debug it. It looks like JOCL's binding is more object oriented and more user friendly. But LWJGL is offering a integrated package of OpenGL, GLFW and OpenCL binding, which I guess I have to stick with it for now.
Besides auto converting Java bytecode to OpenCL kernel, Aparapi seems much easier to get start with. Without dealing a lot of data copying and buffer creating things, life is much simpler.
I might write a blog(in Chinese of course, since I'm a Chinese, maybe I'll commit this program to LWJGL as a OpenCL HelloWorld) to describe where you should take a good care with LWJGL's OpenCL binding, where I actually crash the JVM by doing it wrong. (BTW, using println to locate the crash point is way faster than step through XD)
Learned a lot about general computing on GPU via a youtube video.
Besides OpenGL compute shader, I'd prefer using OpenCL to update tons of units concurrently. I'll give it a try, but it seems like LWJGL's OpenCL binding is not well documented and only a few examples are given. Maybe I'll go further deeper in it.
I think my current password are used for last ten years and somehow I still didn't change it and relay on the 2FA to protect my account
What's more I only have one yubikey and doesn't have a backup for those 2FA identities.
Well... That may not be a good practice.
Encountered a mind-blowing problem with OpenGL.
When I finally drew a circle using LWJGL with OpenGL, I tried moving my code from glBegin/glEnd calls to VBOs, and today I tried to make my code using shaders. And problem is here.
I draw a circle by slicing it into some segments and calculate the coordinates of points on the edge, then I can use GL_TRIANGLE_FAN or GL_LINE_LOOP to draw a circle. I randomly choose a color by assigning red equals cos(theta), where the i th theta is 2 * pi * i divided by total segments.
If I draw the circle using GL_LINE_LOOP, the color on the edge is correct, where only theta in mines pi to pi is positive number, thus given the red color, which should be the right hand side of the circle. Picture 1 is a compare that on the left I used GL_COLOR_ARRAY client state to draw color, on the right side I use shader but calculated cos before fragment shader(both in CPU part and vertex shader, they are same in result). In picture 2, I calculate cos value in the fragment shader by the theta passed by vertex shader. And it shows on the right of the picture, which is pretty odd.
I knew there other stages between vertex shader and fragment shader, but how they effect those color or theta value? Also on the left side of picture, color gradient given by fixed pipeline also seems a little bit weird.
BTW I have no ideas about where to find those documents. LWJGL doesn't have a detailed document on OpenGL(which I guess they of course not have one), and on the OpenGL side, the documents are just overwhelmed me...
have a cold with pretty strong symptoms
95% percent sure it's not covid 19
I feel so fucked up by just having this little flu (I guess), I lost my towel and struggled to finish my passages. I felt like I'm broken and I knew that shouldn't be that hard, but I can't finish that properly. Anyway at least I finished that and found my towel.
Now I somehow understand the feeling who has severe disease, feeling of frustration. A friend of mine has struggled with cancer for several years and it's really unbearable.
Symptoms from flu and the friend trying to fighting the cancer, both make me feel sad.
It's 11:30pm in UTC+8,
I think I'd better go to bed now.
Everybody goodnight 😴
I rerun the code this morning and it didn't crash.
I didn't change anything and it just magically runs. But still I can't see anything on that window. My OpenGL codes probably still broken.
GFW Certified Shitizen / I appreciate life / Certified Chinese Ham with HF license
QOTO: Question Others to Teach Ourselves. A STEM-oriented instance.
An inclusive free speech instance.
All cultures and opinions welcome.
Explicit hate speech and harassment strictly forbidden.
We federate with all servers: we don't block any servers.