これはtutorialと読んで正しく実行します。OpenGLでglviewport()を使用
しかし、私はいくつかの変更を加えたいと思っていました。最初の変更は、例えば円の1/4だけを表示するなど、その円の異なるビューを表示することでした。私はこれがglViewPort(パラメータ)によって行われることを知っています。ただし、パラメータを変更した後は何も起こりません。私はこの問題がなぜ発生するのかを理解するために多くのフォーラムをチェックしましたが、何も分かりませんでした。
誰かがこれについてもっと詳しく説明し、使い方を教えてもらえますか?
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
//glLoadIdentity();
gluOrtho2D(0.0,200.0,0.0,200.0);
//glViewport(0, 0, 250, 250);
}
void setPixel(GLint x,GLint y)
{
glBegin(GL_POINTS);
glVertex2i(x,y);
glEnd();
}
void Circle(){
int xCenter=100,yCenter=100,r=50;
int x=0,y=r;
int p = 3/2 - r;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1 ,0, 0);
while(x<=y){
setPixel(xCenter+x,yCenter+y);
setPixel(xCenter+y,yCenter+x);
setPixel(xCenter-x,yCenter+y);
setPixel(xCenter+y,yCenter-x);
setPixel(xCenter-x,yCenter-y);
setPixel(xCenter-y,yCenter-x);
setPixel(xCenter+x,yCenter-y);
setPixel(xCenter-y,yCenter+x);
if (p<0)
p += (2*x)+3;
else {
p += (2*(x-y))+5;
y -= 1;
}
x++;
}
glFlush();
}
int main(int argc,char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(0,0);
glutInitWindowSize(500,500);
glutCreateWindow("My Circl2e");
init();
glViewport(0,0,250,250);
//glLoadIdentity();
glutDisplayFunc(Circle);
glutMainLoop();
return 0;
}
PS:いくつかの例では、私は彼らが使用する参照SETWINDOW(パラメータ
を(問題が起こったかを理解するために)これは(もともとそのtutorialに書かれている)コード
コードです)glViewPort(パラメータ)を使用する前に。 setWindow()にはubuntuで利用できないライブラリが必要です。
ご返信ありがとうございます。私はcircle()関数の開始時にglViewport()を呼び出して、いくつかの変更が起こるのを見ました。今のところ、サークルのサイズを変更するだけです。たとえば、glviewPort(0、0、200、200)を設定した場合の円は、glViewport(0、0、100)に設定したときよりも2倍大きくなります。私がしたいのは、サークルの一部、たとえばその半分を見ることです。あなたは私を助けてくれますか?ありがとうございました – Kadaj13