2017-02-23 9 views
5

क्या कोई मुझे बता सकता है कि समन्वय में एक सफेद पिक्सेल कैसे खींचना है, (100,200) कहें?ओपनजीएल में एक पिक्सेल कैसे आकर्षित करें?

मैं जीएलयूटी का उपयोग कर रहा हूं और अब तक पता चला है कि एक खाली विंडो कैसे खोलें। एक बार जब मैं पिक्सल खींचने के बारे में पता लगाता हूं, तो मैं Bresenham line drawing algorithm को लागू करने के लिए इसका उपयोग करूंगा। (हाँ, मुझे पता है कि ओपनजीएल लाइनों को आकर्षित कर सकता है। मुझे इसे स्वयं लागू करने की आवश्यकता है)।

#include <stdio.h> 
#include <GL/glut.h> 

static int win(0); 

int main(int argc, char* argv[]){ 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE); 
    glutInitWindowSize(500,500); 
    glutInitWindowPosition(100,100); 

    //step 2. Open a window named "GLUT DEMO" 
    win = glutCreateWindow("GLUT DEMO"); 
    glClearColor(0.0,0.0,0.0,0.0); //set background 

    glClear(GL_COLOR_BUFFER_BIT); 
    glFlush(); 
    glutMainLoop(); 
} 
+1

ओपनजीएल के साथ यह एक अजीब बात है, और वास्तव में इसके लिए डिज़ाइन नहीं किया गया है। आप इसके लिए ओपनजीएल का उपयोग क्यों कर रहे हैं? मुझे लगता है कि आप अपनी लाइन पिक्सल के साथ बनावट बना सकते हैं और उस बनावट के साथ एक त्रिकोण/ट्रैक्टर खींच सकते हैं, या आप प्रत्येक पिक्सेल के लिए एक बिंदु प्रस्तुत कर सकते हैं। – immibis

+0

क्या आपको डिस्क्रेटेड लीगेसी ओपनजीएल 1.0 का उपयोग करना होगा या आप आधुनिक ओपनजीएल v3.3 या उच्चतर का उपयोग कर सकते हैं? –

उत्तर

6

यह है कि जानने के लिए stackoverflow पढ़ने और यूट्यूब ट्यूटोरियल देखकर के एक पूरे दिन लग गए कोड का जादू लाइन है:

glVertex2i(x,y);

यहाँ संदर्भ में यह काम करने की जरूरत है:

glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 

glutInitWindowPosition(80, 80); 
glutInitWindowSize(500,500); 

glutCreateWindow("A Simple OpenGL Program"); 

glClear(GL_COLOR_BUFFER_BIT); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluOrtho2D(0.0, 500.0, 500.0,0.0); 

glBegin(GL_POINTS); 
    glColor3f(1,1,1); 
    glVertex2i(100,100); 
glEnd(); 
+0

यह भी एक वैध उत्तर है, हालांकि, ध्यान दें कि, यदि आप GlPointSize 1 नहीं है (जो डिफ़ॉल्ट रूप से है) तो आप केवल एक पिक्सेल से अधिक आकर्षित कर सकते हैं। – MuertoExcobito

0

यह कैंची आयत सेट करके आसानी से किया जा सकता है, और फिर समाशोधन, जो केवल कैंची आयताकार में निर्दिष्ट क्षेत्र को साफ़ करेगा। उदाहरण के लिए:

glEnable(GL_SCISSOR_TEST); 
glScissor(100, 200, 1, 1); 
glClearColor(1,1,1,1); 
glClear(GL_COLOR_BUFFER_BIT); 
// Remember to disable scissor test, or, perhaps reset the scissor rectangle: 
glEnable(GL_SCISSOR_TEST); 
संबंधित मुद्दे