ProgrammingのTipなど

OpenGLでの様々な図形の描画

基本的な三角形
void drawTriangle() {
  glBegin(GL_TRIANGLES);
  glVertex3f(-1, 0, 0);
  glVertex3f(0, 1, 0);
  glVertex3f(1, 0, 0);
  glEnd();
}
正方形(平面)
void drawPlate() 
{
  glBegin(GL_POLYGON);
  glVertex3f(-1,-1,0);
  glVertex3f(-1,1,0);
  glVertex3f(1,1,0);
  glVertex3f(1,-1,0);
  glEnd();  	
}
立方体
テクスチャー無し法線あり
void drawBox(float size) {
  
  glBegin(GL_QUADS);
  
  glNormal3f(0.0f, 0.0f, 1.0f);
  glVertex3f(-size, -size, size);
  glVertex3f(size, -size, size);
  glVertex3f(size, size, size);
  glVertex3f(-size, size, size);
  
  glNormal3f(0.0f, 0.0f, -1.0f);
  glVertex3f(-size, -size, -size);
  glVertex3f(-size, size, -size);
  glVertex3f(size, size, -size);
  glVertex3f(size, -size, -size);
  
  glNormal3f(0.0f, 1.0f, 0.0f);
  glVertex3f(-size, size, -size);
  glVertex3f(-size, size, size);
  glVertex3f(size, size, size);
  glVertex3f(size, size, -size);
  
  glNormal3f(0.0f, -1.0f, 0.0f);
  glVertex3f(-size, -size, -size);
  glVertex3f(size, -size, -size);
  glVertex3f(size, -size, size);
  glVertex3f(-size, -size, size);
  
  glNormal3f(1.0f, 0.0f, 0.0f);
  glVertex3f(size, -size, -size);
  glVertex3f(size, size, -size);
  glVertex3f(size, size, size);
  glVertex3f(size, -size, size);
  
  glNormal3f(-1.0f, 0.0f, 0.0f);
  glVertex3f(-size, -size, -size);
  glVertex3f(-size, -size, size);
  glVertex3f(-size, size, size);
  glVertex3f(-size, size, -size);
  
  glEnd();
}
テクスチャ有り法線有り
void drawBoxWithTexAndNormal(float size, int texID) {
  const float sizeS = 0.0f;
  const float sizeZ = 1.0f;
  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, texID);

  glBegin(GL_QUADS);
  
  glNormal3f(0.0f, 0.0f, 1.0f);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(-size, -size, size);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(size, -size, size);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(size, size, size);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(-size, size, size);
  
  glNormal3f(0.0f, 0.0f, -1.0f);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(-size, -size, -size);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(-size, size, -size);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(size, size, -size);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(size, -size, -size);
  
  glNormal3f(0.0f, 1.0f, 0.0f);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(-size, size, -size);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(-size, size, size);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(size, size, size);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(size, size, -size);
  
  glNormal3f(0.0f, -1.0f, 0.0f);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(-size, -size, -size);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(size, -size, -size);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(size, -size, size);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(-size, -size, size);
  
  glNormal3f(1.0f, 0.0f, 0.0f);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(size, -size, -size);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(size, size, -size);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(size, size, size);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(size, -size, size);
  
  glNormal3f(-1.0f, 0.0f, 0.0f);
  glTexCoord2f(sizeS, sizeS);
  glVertex3f(-size, -size, -size);
  glTexCoord2f(sizeZ, sizeS);
  glVertex3f(-size, -size, size);
  glTexCoord2f(sizeZ, sizeZ);
  glVertex3f(-size, size, size);
  glTexCoord2f(sizeS, sizeZ);
  glVertex3f(-size, size, -size);
  
  glEnd();
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます