Note that there are some explanatory texts on larger screens.

plurals
  1. POOpenGL Noob question: Starting Position for Drawing
    text
    copied!<p>I have a line that I am drawing but the starting point of the drawing is always dead center of the container view. How can I get the drawing to occur just inside of the right side of the view??</p> <pre><code>//Code - (void)drawView { // Replace the implementation of this method to do your own custom drawing GLfloat lineVertices[maxCurvePoint*2]; GLfloat lineVerticesGrid[GRID_LINES_HORZ*GRID_LINES_VERT*4]; GLfloat lineVerticesGridTexCoords[GRID_LINES_HORZ*GRID_LINES_VERT*4]; float currLevel = curve[(maxCurvePoint+curveStart-1)%maxCurvePoint]; int i; for (i=0; i&lt;maxCurvePoint; i++) { lineVertices[i*2] = i/(maxCurvePoint/2.0)-1.0; // X lineVertices[i*2+1] = curve[(i+curveStart)%maxCurvePoint]; // Y } for (i=0; i&lt;GRID_LINES_HORZ; i++) { float yval = 4.0*i/GRID_LINES_HORZ-2.0; lineVerticesGrid[i*4] = -2.0; // X lineVerticesGrid[i*4+1] = yval; // Y lineVerticesGrid[i*4+2] = 2.0; // X lineVerticesGrid[i*4+3] = yval; // Y lineVerticesGridTexCoords[i*4] = -2.3/1.4; // X lineVerticesGridTexCoords[i*4+1] = (yval-currLevel)/1.4; // Y lineVerticesGridTexCoords[i*4+2] = 1.7/1.4; // X lineVerticesGridTexCoords[i*4+3] = (yval-currLevel)/1.4+0.7; // Y } for (i=0; i&lt;GRID_LINES_VERT; i++) { int j = (GRID_LINES_HORZ+i)*4; float xval = 4.0*i/GRID_LINES_VERT-2.0; lineVerticesGrid[j] = 4.0*i/GRID_LINES_VERT-2.0; // X lineVerticesGrid[j+1] = -2.0; // Y lineVerticesGrid[j+2] = 4.0*i/GRID_LINES_VERT-2.0; // X lineVerticesGrid[j+3] = 2.0; // Y lineVerticesGridTexCoords[j] = (xval-0.7)/1.4; // X lineVerticesGridTexCoords[j+1] = currLevel/1.4+1.4+0.5; // Y lineVerticesGridTexCoords[j+2] = (xval-0.7)/1.4+0.7; // X lineVerticesGridTexCoords[j+3] = currLevel/1.4-1.4+0.5; // Y } [EAGLContext setCurrentContext:context]; glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); glViewport(0, 0, backingWidth, backingHeight); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glEnable(GL_DEPTH_TEST); //glEnable(GL_LINE_SMOOTH); glEnable(GL_POINT_SMOOTH); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glScalef(0.8, 0.8, 1.0); glTranslatef(-0.2, 0, 0); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glVertexPointer(2, GL_FLOAT, 0, spriteVertices); glEnableClientState(GL_VERTEX_ARRAY); glTexCoordPointer(2, GL_SHORT, 0, spriteTexcoords); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glPushMatrix(); glTranslatef(1.0, currLevel, -0.01); glColor4f(0.0, 0.0, 0.0, 1.0); //SpotLight - Should be kinda light /* if([colorTheme isEqualToString:@"blue"]) //SpotLight - Should be kinda light glColor4f(0.0, 0.0, 0.0, 1.0); else if ([colorTheme isEqualToString:@"red"]) glColor4f(0.5, 0.0, 0.0, 1.0); else if ([colorTheme isEqualToString:@"green"]) glColor4f(0.0, 0.5, 0.0, 1.0); else if ([colorTheme isEqualToString:@"orange"]) glColor4f(255.f/255.f, 101/255.f, 3/255.f, 1.0); else glColor4f(0.0, 0.0, 0.0, 1.0); */ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glPopMatrix(); glVertexPointer(2, GL_FLOAT, 0, lineVerticesGrid); glEnableClientState(GL_VERTEX_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, lineVerticesGridTexCoords); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glLineWidth(1.0); glColor4f(0.0, 0.0, 0.0, 1.0);//Grid Lines behind spotlight...Very faint /* if([colorTheme isEqualToString:@"blue"]) //Grid Lines behind spotlight...Very faint glColor4f(0.0, 0.0, 0.0, 1.0); else if ([colorTheme isEqualToString:@"red"]) glColor4f(0.4, 0.0, 0.0, 1.0); else if ([colorTheme isEqualToString:@"green"]) glColor4f(0.0, 0.4, 0.0, 1.0); else if ([colorTheme isEqualToString:@"orange"]) glColor4f(255.f/255.f, 204/255.f, 7/255.f, 1.0); else glColor4f(0.0, 0.0, 0.0, 1.0); */ glDrawArrays(GL_LINES, 0, (GRID_LINES_HORZ+GRID_LINES_VERT)*2); glDisable(GL_TEXTURE_2D); glDisable(GL_DEPTH_TEST); glVertexPointer(2, GL_FLOAT, 0, lineVertices); glEnableClientState(GL_VERTEX_ARRAY); glLineWidth(9.0); glPointSize(9.0); if([colorTheme isEqualToString:@"blue"]) //Wave line before cursor outside color... little faint glColor4f(0.0, 0.5, 1.0, 0.2); else if ([colorTheme isEqualToString:@"red"]) glColor4f(0.5, 0.0, 0.0, 0.2); else if ([colorTheme isEqualToString:@"green"]) glColor4f(0.0, 0.5, 0.0, 0.2); else if ([colorTheme isEqualToString:@"orange"]) glColor4f(255.f/255.f, 194/255.f, 12/255.f, 0.2); else glColor4f(0.0, 0.0, 0.0, 1.0); glDrawArrays(GL_LINE_STRIP, 0, maxCurvePoint); glTranslatef(0, 0, .01); glDrawArrays(GL_POINTS, 0, maxCurvePoint); glPointSize(15.0); glDrawArrays(GL_POINTS, maxCurvePoint-1, 1); glTranslatef(0, 0, .01); glLineWidth(3.0); glPointSize(3.0); //Wave line before cursor inside if([colorTheme isEqualToString:@"blue"]) glColor4f(0.0, 0.5, 1.0, 0.7); else if ([colorTheme isEqualToString:@"red"]) glColor4f(0.5, 0.0, 1.0, 0.7); else if ([colorTheme isEqualToString:@"red"]) glColor4f(0.0, 0.5, 1.0, 0.7); else if ([colorTheme isEqualToString:@"orange"]) glColor4f(255.f/255.f, 220/255.f, 11/255.f, 0.7); else glColor4f(0.0, 0.0, 0.0, 1.0); glDrawArrays(GL_LINE_STRIP, 0, maxCurvePoint); glTranslatef(0, 0, .01); glDrawArrays(GL_POINTS, 0, maxCurvePoint); glPointSize(9.0); glDrawArrays(GL_POINTS, maxCurvePoint-1, 1); glTranslatef(0, 0, .01); glLineWidth(1.0); glPointSize(1.0); glColor4f(1.0, 1.0, 1.0, 1.0); glDrawArrays(GL_LINE_STRIP, 0, maxCurvePoint); glPointSize(5.0); glDrawArrays(GL_POINTS, maxCurvePoint-1, 1); glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); [context presentRenderbuffer:GL_RENDERBUFFER_OES]; if (demoMode){ if (randomMode) curve[ curveStart ] = ((rand()%32768)/32768.0)*0.4-0.2; else curve[ curveStart ] = ekgMap[ curveStart ]; // ((rand()%32768)/32768.0)*0.4-0.2; // DLog(@"%f", ekgMap[ curveStart ]); } else{ if ([dataPoints count] ==0){ curve[ curveStart ] = 0.0; }else { if (!inverted) { curve[curveStart] = scaleByMid(self.min, self.max, [[dataPoints dequeue] floatValue]) /scaleFactor; // [[dataPoints dequeue] floatValue] /scaleFactor; // DLog(@"Queue Length: %d", [dataPoints count]); } else{ float point = scaleByMid(self.min, self.max, [[dataPoints dequeue] floatValue]) /scaleFactor; curve[curveStart] = (point -(point *2)); } } } curveStart = (curveStart+1)%maxCurvePoint; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload