Question about Advanced Graphics Programming Using OpenGL

1 Answer

Opengl code i want the OPENGL source code for dispersion of light through prism.

Posted by on

  • Anonymous Mar 24, 2014

    source code for heap sort algorithm using opengl
    which can be used in mini projects

×

Ad

1 Answer

  • Level 1:

    An expert who has achieved level 1.

  • Contributor
  • 3 Answers

OpenGL doesn't handle photonics or any other low-level physics - you'll either need a raytracer, such as POVRAY or Blender, or you'll have to write the physics yourself, to emulate light rays of varying colours (I recommend using a HSL colour space for your physics, only translating to RGB when rendering the frame).
The refraction of a ray at the interface of the prism and the "air" can be calculated using Index of Refraction, correction factor to account for different refraction dependent on frequency (Hue) and a random number generator to emulate slight scattering.

Posted on Sep 05, 2009

Ad

1 Suggested Answer

6ya6ya
  • 2 Answers

SOURCE: I have freestanding Series 8 dishwasher. Lately during the filling cycle water hammer is occurring. How can this be resolved

Hi,
a 6ya expert can help you resolve that issue over the phone in a minute or two.
best thing about this new service is that you are never placed on hold and get to talk to real repairmen in the US.
the service is completely free and covers almost anything you can think of (from cars to computers, handyman, and even drones).
click here to download the app (for users in the US for now) and get all the help you need.
goodluck!

Posted on Jan 02, 2017

Ad

Add Your Answer

Uploading: 0%

my-video-file.mp4

Complete. Click "Add" to insert your video. Add

×

Loading...
Loading...

Related Questions:

1 Answer

How can i corredt this error ??


report to mojang and play the pe version for a while. or you can delete your minecraft file and download it again

May 23, 2014 | Kaltner.net Minecraft Mobile Admin

1 Answer

I want a paint brush application using opengl


Pain.net is one of the best open source paint programs. You can download at the link below:

http://www.getpaint.net/

Nov 14, 2009 | Advanced Graphics Programming Using OpenGL...

1 Answer

Project on OpenGL


http://nehe.gamedev.net/lesson.asp?index=01
There are the best set of lessons for OpenGL beginners.

May 21, 2009 | Advanced Graphics Programming Using OpenGL...

1 Answer

I want a program in openGL for the paint editor


i want a mini project on opengl the topic is graphics ediotor jst like ms paint

May 20, 2009 | Advanced Graphics Programming Using OpenGL...

Not finding what you are looking for?

Open Questions:

0 Answers

my code in opengl does not work can any one help me #include <string.h> #include <GL/glut.h> #include "math.h" float rotate =0.0; float start = 0.0; float z_dep = 0.0; int poi_size = 0; int poi_arr[100][2]; float rad_arr[50]; int m_x = 0; int m_y = 0; int rubber_band_on = 0; int down_flag = 0; #define MENU1 10 #define MENU2 11 #define MENU3 12 #define MENU4 13 #define MENU5 14 GLfloat r,g,b; GLint t=0 ; void sel(int item) { switch(item) { case MENU1: {r=1 , g=0 , b=0;} break; case MENU2: {r=0 , g=0 , b=1;} break; case MENU3: {r=0 , g=1 , b=0;} break; case MENU4: {t=1;} break; case MENU5: {t=2;} break; } glutPostRedisplay(); } void menu(void) { int MainMenu, SubMenu1,SubMenu2; SubMenu1=glutCreateMenu(sel); glutAddMenuEntry("red", MENU1); glutAddMenuEntry("bule", MENU2); glutAddMenuEntry("green", MENU3); SubMenu2=glutCreateMenu(sel); glutAddMenuEntry("line", MENU4); glutAddMenuEntry("circle", MENU5); MainMenu=glutCreateMenu(sel); glutAddSubMenu("Color", SubMenu1); glutAddSubMenu("Shap", SubMenu2); glutAttachMenu(GLUT_RIGHT_BUTTON); }void drawCircle(float radius, float x1, float y1) { float angle = 0; float x2,y2,cx,cy,fx,fy; int cache = 0; glBegin(GL_LINES); for (angle = 0; angle < 360; angle+=1.0) { float rad_angle = angle * 3.14 / 180; x2 = x1+radius * sin((double)rad_angle); y2 = y1+radius * cos((double)rad_angle); if (cache) { glVertex2f(cx,cy); glVertex2f(x2,y2); } else { fx = x2; fy = y2; } cache = 1; cx = x2; cy = y2; } glVertex2f(x2,y2); glVertex2f(fx,fy); glEnd(); } void tick(void) { glutPostRedisplay(); } void display1(void) { glClear(GL_COLOR_BUFFER_BIT); // Draw the lines created by user glBegin(GL_LINES); for(int i=0; i<poi_size; i++) { glVertex2f(poi_arr[i][0],poi_arr[i][1]); } if (rubber_band_on && (poi_size%2==1)) { glVertex2f(m_x,m_y); } glEnd(); glutSwapBuffers(); } void handleKeypress(unsigned char key, int x, int y) { switch (key) { case 27: //Escape key exit(0); } } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, w, h, 0); glMatrixMode(GL_MODELVIEW); } void mouse_move1(int x, int y) { m_x = x; m_y = y; display1(); } void mouse1(int button, int state, int x, int y) { m_x = x; m_y = y; switch (button) { case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) { // glutIdleFunc(spinDisplay); } if (state == GLUT_UP) { if (poi_size>0) { poi_size-=2; } rubber_band_on = 0; glutIdleFunc(NULL); } break; case GLUT_LEFT_BUTTON: rubber_band_on = 1; if (state == GLUT_DOWN) { down_flag = 1; } if (state == GLUT_UP) { if(down_flag) { poi_arr[poi_size][0]=x; poi_arr[poi_size][1]=y; poi_size++; down_flag = 0; } glutIdleFunc(NULL); } break; default: break; } display1(); } float calculate_radius(int x1,int y1) { int x_diff = m_x - x1; int y_diff = m_y - y1; if(x_diff<0) { x_diff *= -1; } if(y_diff<0) { y_diff *= -1; } float mag = x_diff*x_diff + y_diff*y_diff; float rad = sqrt(mag); return rad; } void display2(void) { glClear(GL_COLOR_BUFFER_BIT); for(int i=0; i<poi_size; i+=2) { int rad_index = (int)(i/2); float rad = rad_arr[rad_index]; if (rad>1) { drawCircle(rad,poi_arr[i][0],poi_arr[i][1]); } } glutSwapBuffers(); } void mouse_move2(int x, int y) { m_x = x; m_y = y; if (rubber_band_on) { float rd = calculate_radius(poi_arr[poi_size-1][0],poi_arr[poi_size-1][1]); rad_arr[poi_size/2] = rd; } display2(); } void mouse2(int button, int state, int x, int y) { m_x = x; m_y = y; switch (button) { case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) { // glutIdleFunc(spinDisplay); } if (state == GLUT_UP) { glutIdleFunc(NULL); } break; case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) { down_flag = 1; } if (state == GLUT_UP) { if(down_flag) { poi_arr[poi_size][0]=x; poi_arr[poi_size][1]=y; poi_size++; down_flag = 0; rubber_band_on = !rubber_band_on; } glutIdleFunc(NULL); } break; default: break; } if (rubber_band_on && poi_size>0) { float rd = calculate_radius(poi_arr[poi_size-1][0],poi_arr[poi_size-1][1]); rad_arr[poi_size/2] = rd; } display2(); } int main(int argc, char **argv) { glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(1000, 800); glutCreateWindow("OPENGL LINE DRAWING"); glClearColor(0.0, 0.0, 0.0, 1.0); menu(); if (t=1) { glutDisplayFunc(display1); glutReshapeFunc(reshape); glutIdleFunc(tick); glutKeyboardFunc(handleKeypress); glutMouseFunc(mouse1); glutMotionFunc(mouse_move1); glutPassiveMotionFunc(mouse_move1); glutMainLoop(); } if (t=2) { glutDisplayFunc(display2); glutReshapeFunc(reshape); glutIdleFunc(tick); glutKeyboardFunc(handleKeypress); glutMouseFunc(mouse2); glutMotionFunc(mouse_move2); glutPassiveMotionFunc(mouse_move2); glutMainLoop(); } return 0; /* ANSI C requires main to return int. */ }

Jun 22, 2013 | Advanced Graphics Programming Using OpenGL...

See all Advanced Graphics Programming Using OpenGL Questions

Advanced Graphics Programming Using OpenGL  Logo

Related Topics:

438 people viewed this question

Ask a Question

Usually answered in minutes!

Top Advanced Graphics Computers & Internet Experts

Doctor PC
Doctor PC

Level 3 Expert

7733 Answers

kakima

Level 3 Expert

102366 Answers

David Payne
David Payne

Level 3 Expert

14161 Answers

Are you an Advanced Graphics Computer and Internet Expert? Answer questions, earn points and help others

Answer questions

Manuals & User Guides

Loading...